Active Record Estou com uma dúvida sobre o active record. É possível eu instanciar a classe passando como parametro uma string ao invés de um inteiro. Ex: $customer = new Customer('matheus') invés de $customer = new Customer(4) ...
MF
Active Record  
Fechado
Estou com uma dúvida sobre o active record. É possível eu instanciar a classe passando como parametro uma string ao invés de um inteiro.
Ex: $customer = new Customer('matheus')
invés de
$customer = new Customer(4)

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 (6)


AN

Olá,
Acredito que neste caso você deve trabalhar com a API de critérios TCriteria:
$criteria->add(new TFilter('nome', 'like', 'matheus%'));


Siga o exemplo do tutor:
 
  1. <?php
  2. class CollectionLoad extends TPage
  3. {
  4. public function __construct()
  5. {
  6. parent::__construct();
  7. try
  8. {
  9. TTransaction::open('samples'); // abre uma transação
  10. $criteria = new TCriteria;
  11. $criteria->add(new TFilter('gender', '=', 'F')); // aqui você define seu critério
  12. $repository = new TRepository('Customer');
  13. $customers = $repository->load($criteria);
  14. foreach ($customers as $customer)
  15. {
  16. echo $customer->id . ' - ' . $customer->name . '<br>';
  17. }
  18. TTransaction::close(); // fecha a transação
  19. }
  20. catch (Exception $e)
  21. {
  22. new TMessage('error', $e->getMessage());
  23. }
  24. }
  25. }
  26. ?>


GF

É possível sim! Você terá que fazer uns ajustes. Na base de dados a sua String vai ter que ser chave primária. Na sua classe Customer você terá que definir a String como chave primária. Depois disso é só sair usando... Porém o ideal é que você trabalhe com repositório, como o Ademilson já citou.

Valeu?
MF

Exatamente o melhor é usar o Criteria. Chave primaria como string não é o ideal. Só que eu queria utilizar o mesmo padrão do ObejctLazy, utilizando as funções get para pegar a informação de outros models sem precisar fazer uma query manual para isso. é possível realizar essa operação?
AN

Olá!
não compreendo direito o que deseja fazer, passa mais detalhes do que esta tentando implementar assim podemos ajudar da melhor maneira possível, digamos qual o relacionamento entre estes objetos? Pode postar seu código da forma como esta tentando fazer e apontar onde não tem obtido sucesso! ;)

JN

Bom dia,

Se eu entendi o que vc precisa do padrão LAZY LOAD (www.adianti.com.br/framework_files/tutor/index.php?class=ObjectLazyV), verifica no tutor o control CustomerFormView e o model Customer, acho que é isso que está procurando.

Abraço.
MF

isso aí. vlw