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:
 
  1. <?php
  2. $pessoa = new Pessoa(1, FALSE);
  3. ?>


Entretanto, para essa abordagem funcionar, o construtor da classe deve ter seu início como demonstrado a seguir:
 
  1. <?php
  2. class Pessoa extends TRecord
  3. {
  4. const TABLENAME = 'customer';
  5. const PRIMARYKEY= 'id';
  6. const IDPOLICY = 'serial'; // {max, serial}
  7. public function __construct($id = NULL, $callObjectLoad = TRUE)
  8. {
  9. parent::__construct($id, $callObjectLoad);
  10. // addAttribute's
  11. }
  12. }
  13. ?>


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:

 
  1. <?php
  2. $repository = new TRepository('Customer');
  3. $criteria = new TCriteria;
  4. //...
  5. $customers = $repository->load($criteria, FALSE);
  6. ?>

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