在花了几个小时并遵循代码之后,我发现 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 回答