1

リレーション テーブルに ID を持つ別の属性 (私の例では " ") を挿入したいのです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   
4

3 に答える 3

0

このような状況に陥ったとき、私は多対多の識別表をあきらめて、次のような構造に移行することを好みます。

  • ID
  • ユーザーID
  • 試験ID
  • tiers_temps

あなたが使用した構造体で値 tiers_temps を管理するのは非常に不便だと思うからです。

于 2012-09-28T10:02:29.150 に答える
0

あなたの提案には誤りがあります。オブジェクト $user は、「user_has_examen」ではなく「user」というテーブルを参照するため (以前は説明していませんでした)、ユーザーの「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();
    }
}
于 2012-09-28T07:00:30.407 に答える
0

中間アイテムを操作する良い方法が見つかりませんでした。ただし、リレーションに基づいてすべてのユーザーを取得し、tiers_temps保存する前に値を適用できExamenます。

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

$users = $Examen->Users;
foreach ($users as $user)
{
  $user->tiers_temps = '45';
}
于 2012-09-27T14:41:55.570 に答える