2012-09-27 112 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