我需要在Laravel中定义3个模型之间的关系。 我有用户,文档和权限。用户可以拥有多个文档,并且可以将文档分配给许多用户。这是一个简单的部分,一个多对多的关系。
现在我有一个Permission表,包含两个条目,读写。 我无法理解它,如何基于用户为文档分配读或写权限。
例如: User1可以编写Document1并读取Document2 User2可以写两个 User3只能读取两个
答案 0 :(得分:2)
App\User::find(1)->documents()->save($document,
['read' => true, 'write' => false]);
此外,在您的模型中,添加您的关系:
->withPivot('document_id', 'user_id', 'read', 'write');
这也是你桌子上的字段。
而不是使用
foreach ($user->documents as $document) {
echo 'Can read: ' . $document->pivot->read;
}
为了便于阅读,您可以使用以下方法为枢轴添加名称:
->withPivot(...)->as('permissions')
然后使用以下方式访问枢轴:
foreach ($user->documents as $document) {
echo 'Can read: ' . $document->permissions->read;
}
感谢bogdan对于透视名称的评论。