2012-09-27 327 views
1

我想在關係表中插入其他屬性(在我的示例中爲「tiers_temps」),它是否可以使用函數「link()」或其他?添加其他屬性鏈接功能

我用其實這個代碼,但我必須更新申請 「tiers_temps」:

$Examen->link('Users', $listAdd); 

用表 「user_has_examen」 結構:

Field  Type Null Key Default Extra 
user_id  int(11) NO PRI 0 
examen_id int(11) NO PRI 0 
tiers_temps int(11) YES  NULL 

回答

0

我沒有找到一個很好的方式與中間商品進行互動。但是你可以在關係法檢索所有用戶,然後,在保存之前應用您tiers_temps值的Examen

$Examen->link('Users', $listAdd); 

$users = $Examen->Users; 
foreach ($users as $user) 
{ 
    $user->tiers_temps = '45'; 
} 
+0

這是我發現的另一種方式。 用$ Examen替換$ userE,看起來可以工作。 謝謝 最後一個問題,在foreach中使用關係更有效率(速度)或使用數組$ listAdd包含用戶id和循環訪問唯一關係來放置關聯tiers_temps? – Patou

+0

必須有一種方法來訪問相關的表,而不用查詢教條來獲取數據。 – j0k

+0

是的,但我不知道這種方式 – Patou

0

。在你的主張聯合國的錯誤。對象$ user引用表「用戶」而不是「user_has_examen」(不是前面描述的,這是正確的),因此用戶不存在「tiers_temps」。 該解決方案的工作,但我回路接入主義......

foreach($user as $userId){ 
    $UserExam = Doctrine::getTable('UserExamen')->findByDql('user_id = ? AND examen_id = ?', array($userId, $exam))->getFirst(); 
    if($UserExam->tiers_temps != $users[$userId]){ 
     $UserExam->tiers_temps = $users[$userId]; 
     $UserExam->save(); 
    } 
} 
0

當我發現自己在這些情況下,我寧願放棄表多對多的識別和移動這樣的結構:

  • ID
  • USER_ID
  • examen_id
  • tiers_temps

,因爲我覺得在您使用的結構中管理值tiers_temps非常不方便。

+1

感謝您的經驗 – Patou