2011-09-20 3 views
0

J'utilise kohana 3.2 et j'ai besoin d'aide avec la relation has_many. Je ne peux pas faire fonctionner mon code. Voici comment mon db ressemblekohana - aider avec has_many

films 
-id (pk) 
-title 
-description 

sources 
-id (pk) 
-film_id 
-code 

class Model_Film extends ORM 
{   
    protected $_has_many = array(
     'sources' => array() 
    ); 

} 

class Model_Source extends ORM 
{  
    protected $_belongs_to = array(
     'film' => array(), 
    ); 
} 

Source est un lien vers le film (. Par exemple DVDRip, RMVB) et voici ce que je dois faire:

$film = ORM::factory('film'); 

$film->title = $title; 
$film->description = $desc; 
$film->year = $year; 
$film->user_id = $uid; 
$film->save(); 

$film->sources->film_id = $film->id; //last film id 
$film->sources->name = $src_name; 
$film->sources->code = $src_code; 
$film->sources->save(); 

Cela ne fait qu'ajouter des valeurs pour le film table, mais pour les sources, il fait un nouvel enregistrement vide.

Répondre

0

Vous devrez créer une nouvelle source pour chacun que vous souhaitez ajouter au film. Par exemple:

$source = ORM::factory('source'); 
$source->film_id = $film->id; 
$source->name = $src_name; 
$source->code = $src_code; 
$source->save(); 

et de répéter pour chaque source que vous souhaitez ajouter au film. La relation a beaucoup pour le film est utilisé pour récupérer ses sources, par exemple:

$sources = $film->sources->find_all(); 
foreach($sources as $src) 
{ 
// do something with $src 
} 
+0

merci pour la réponse. Donc, has_many relation est seulement pour récupérer des données? je peux sauvegarder/modifier les données comme j'ai essayé? Je vais essayer votre code demain et donner un retour si cela fonctionne. – swoorn

+0

Vous pouvez mais seulement la façon dont Andrew vous a donné (à l'intérieur de la boucle) – matino