2010-12-13 8 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 ... 
?> 

erhalte ich die Fehlermeldung: "Kohana_Exception [0]: Die Loja Eigenschaft existiert nicht in der Model_Cliente Klasse".Kohana 3 ORM: Speichern von Beziehungen

Warum kann ich Loja nicht zum Kunden hinzufügen ($ cliente-> loja = $ loja) und dann speichern?

Antwort

2

ORM-Modell kann nur belongs_to Relationen setzen. Also, sollten Sie Ihren Code neu anordnen:

$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(); 

Und vergessen Sie nicht, $_belongs_to Eigenschaft in Model_Loja zu definieren!

+0

+1 für die Klarheit – gpasci