1

何時間も費やしてコードをたどった後、Laravelには多対多リレーションの中間テーブルを編集する方法がないことがわかりました..これは問題ありませんが、大きな欠点があります. アプリを大規模に適用すると、idインデックスが急速に増加します。とにかくあるのだろうか?そして、この ID の問題を克服する方法 (インデックスを再作成するための cron ジョブについて考えました)

4

1 に答える 1

1

もちろんあります!このデータベース構造があり、UserGroupが多対多の関係を共有validし、ピボット (中間) テーブルのフィールドがあるとします。

+-------------+  +-------------+  +-------------+
| users       |  | groups      |  | group_user  |
+-------------+  +-------------+  +-------------+
| id          |  | id          |  | group_id    |
| name        |  | name        |  | user_id     |
| email       |  | desc        |  | valid       |
+-------------+  +-------------+  +-------------+

ここで、valid列は関係に厳密には必要ないため、Laravel にこの行を具体的にフェッチするように指示する必要があります。簡単にするために、この例では正しいと呼んでいますが、頻繁に必要な場合は、おそらくモデル関係自体に入れたいと思うでしょうUsergroupsGroupusersメソッド。

// 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 に答える