为链接功能添加其他属性

时间:2012-09-27 12:00:18

标签: php doctrine doctrine-1.2

我想在关系表中插入另一个属性(在我的示例中为“tiers_temps”)ids,是否可以使用函数“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   

3 个答案:

答案 0 :(得分:0)

我找不到与中间项交互的好方法。但您可以根据关系采取行动来检索所有用户,然后在保存tiers_temps之前应用Examen值:

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

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

答案 1 :(得分:0)

你的命题没有错误。对象$ user引用表“user”而不是“user_has_examen”(之前没有descibe,那是正确的),因此用户不存在“tiers_temps”。 这个解决方案有效,但我循环访问Doctrine ...

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

答案 2 :(得分:0)

当我发现自己处于这些情况时,我宁愿放弃多对多的表格识别并转移到这样的结构:

  • ID
  • USER_ID
  • examen_id
  • tiers_temps

因为我觉得在你使用的结构中管理值tiers_temps非常不方便。