何時間も費やしてコードをたどった後、Laravelには多対多リレーションの中間テーブルを編集する方法がないことがわかりました..これは問題ありませんが、大きな欠点があります. アプリを大規模に適用すると、id
インデックスが急速に増加します。とにかくあるのだろうか?そして、この ID の問題を克服する方法 (インデックスを再作成するための cron ジョブについて考えました)
質問する
209 次
1 に答える
1
もちろんあります!このデータベース構造があり、User
とGroup
が多対多の関係を共有valid
し、ピボット (中間) テーブルのフィールドがあるとします。
+-------------+ +-------------+ +-------------+
| users | | groups | | group_user |
+-------------+ +-------------+ +-------------+
| id | | id | | group_id |
| name | | name | | user_id |
| email | | desc | | valid |
+-------------+ +-------------+ +-------------+
ここで、valid
列は関係に厳密には必要ないため、Laravel にこの行を具体的にフェッチするように指示する必要があります。簡単にするために、この例では正しいと呼んでいますが、頻繁に必要な場合は、おそらくモデル関係自体に入れたいと思うでしょうUser
。groups
とGroup
。users
メソッド。
// Retrive the user with ID one
$user = User::find(1);
// This tells Laravel to fetch the `valid` column, when
// the user's groups
$userGroups = $user->groups()->withPivot('valid')->get();
// Get the first group
$firstGroup = $userGroups->first();
// Change the `valid` value for that first group
$firstGroup->pivot->valid = true;
// Save the changes
$firstGroup->pivot->save();
于 2013-08-11T04:06:04.577 に答える