Otimizando o carregamento de objetos A partir da versão 1.0.3 do framework, alguns métodos de carga de objetos foram otimizados para não carregar objetos vinculados (Ex: Agregações e Composições). Como exemplo, podemos citar o objeto Pessoa, que pode ter uma composição com Contato. Assim, ao carregarmos o objeto Pessoa, também carregaremos seus contatos. Entretanto em algumas situações, queremos somente os dados de pessoa...
PD
Otimizando o carregamento de objetos  
Fechado
A partir da versão 1.0.3 do framework, alguns métodos de carga de objetos foram otimizados para não carregar objetos vinculados (Ex: Agregações e Composições). Como exemplo, podemos citar o objeto Pessoa, que pode ter uma composição com Contato. Assim, ao carregarmos o objeto Pessoa, também carregaremos seus contatos. Entretanto em algumas situações, queremos somente os dados de pessoa, e não gostaríamos de carregar os objetos vinculados. Para tal, alguns métodos foram otimizados no framework. A seguir veremos como utilizá-los:

Para carregar somente um objeto sem seus agregados, basta passar FALSE como segundo parâmetro do construtor:
<?php$pessoa = new Pessoa(1, FALSE);?>


Entretanto, para essa abordagem funcionar, o construtor da classe deve ter seu início como demonstrado a seguir:
<?phpclass Pessoa extends TRecord{    const TABLENAME = 'customer';    const PRIMARYKEY= 'id';    const IDPOLICY =  'serial'; // {max, serial}        public function __construct($id = NULL, $callObjectLoad = TRUE)    {        parent::__construct($id, $callObjectLoad);        // addAttribute's    }}?>


Esta mesma técnica pode ser utilizada no carregamento de objetos em lote pelo método TRepository::load(). Ao passar o segundo parâmetro como FALSE para o método load(), estaremos carregando somente os objetos da classe Customer, não seus agregados:

<?php$repository = new TRepository('Customer');$criteria = new TCriteria;//...$customers = $repository->load($criteria, FALSE);?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


LJ

Precisei usar o loadAgregate com parametro FALSE e não funcionou, fui verificar na lib e ele não aceita o parametro, tive que fazer de maneira manual como esta na página 75 do livro, acrescentando o parametro FALSE na linha
$skill = new Skill($customer_skil->skill_id, FALSE) ;

Se possível acrescentar este parâmetro na próxima versão do framework.
Obrigado