2010-12-13 63 views
2
<?php 
class Model_Cliente extends ORM { 
protected $_table_name = 'clientes'; 
protected $_primary_key = 'id'; 
protected $_has_one = array('loja' => array()); 
} 
?> 

<?php 
class Model_Loja extends ORM { 
protected $_table_name = 'lojas'; 
protected $_primary_key = 'id'; 
} 
?> 

<?php 
// code here ... 
public function action_index() 
{ 
$loja = ORM::Factory('loja'); 
$loja->nome = 'Foo Bar Store'; 
$loja->endereco = 'foobar'; 
$loja->senha = '123456'; 

$cliente = ORM::Factory('cliente'); 
$cliente->empresa = 'Foo Bar Ltda.'; 
$cliente->responsavel = 'João da Silva Foo Bar'; 
$cliente->email = '[email protected]'; 
$cliente->telefone = '123456789'; 
$cliente->novidades = true; 
$cliente->loja = $loja; 

$cliente->save(); 
} 
// code here ... 
?> 

Je reçois l'erreur: "Kohana_Exception [0]: La propriété loja n'existe pas dans la classe Model_Cliente".Kohana 3 ORM: Enregistrement des relations

Pourquoi ne puis-je pas ajouter loja à cliente ($ cliente-> loja = $ loja) et enregistrer ensuite?

Répondre

2

Le modèle ORM ne peut définir que les relations belongs_to. Donc, vous devez réorganiser votre code:

$cliente = ORM::Factory('cliente'); 
$cliente->empresa = 'Foo Bar Ltda.'; 
$cliente->responsavel = 'João da Silva Foo Bar'; 
$cliente->email = '[email protected]'; 
$cliente->telefone = '123456789'; 
$cliente->novidades = true; 
$cliente->save(); // save parent model before linking 

$loja = ORM::Factory('loja'); 
$loja->nome = 'Foo Bar Store'; 
$loja->endereco = 'foobar'; 
$loja->senha = '123456'; 
$loja->cliente = $cliente; // the same as $loja->cliente_id = $client->id; 

$loja->save(); 

Et ne pas oublier de définir $_belongs_to propriété Model_Loja!

+0

+1 pour la clarté – gpasci