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 专门获取该行。为了简单起见,我将在示例中直接调用它,但如果您经常需要它,您可能希望将它放在模型关系本身中,在User. groupsGroupusers方法。

// 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 回答