Laravel 3个模型之间的拉威尔关系?
我需要在Laravel中定义3个模型之间的关系。 我拥有用户、文档和权限。一个用户可以有多个文档,并且一个文档可以分配给多个用户。这是简单的部分,一个多对多的关系 现在我有了一个权限表,有两个条目,读和写。 我不知道如何根据用户来分配文档的读写权限 例如: 用户1可以编写文档1和读取文档2 User2可以同时编写这两个代码 User3只能同时读取这两个文件Laravel 3个模型之间的拉威尔关系?,laravel,eloquent,Laravel,Eloquent,我需要在Laravel中定义3个模型之间的关系。 我拥有用户、文档和权限。一个用户可以有多个文档,并且一个文档可以分配给多个用户。这是简单的部分,一个多对多的关系 现在我有了一个权限表,有两个条目,读和写。 我不知道如何根据用户来分配文档的读写权限 例如: 用户1可以编写文档1和读取文档2 User2可以同时编写这两个代码 User3只能同时读取这两个文件 App\User::find(1)->documents()->save($document,
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;
}
然后使用以下方法访问轴:
->withPivot(...)->as('permissions')
foreach ($user->documents as $document) {
echo 'Can read: ' . $document->permissions->read;
}
感谢bogdan在评论中对pivot名称的介绍
此外,在您的模型中,添加到您的关系中:
->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;
}
然后使用以下方法访问轴:
->withPivot(...)->as('permissions')
foreach ($user->documents as $document) {
echo 'Can read: ' . $document->permissions->read;
}
感谢bogdan对pivot名称的评论。您需要将角色赋予编辑、管理员、查看器等用户。@Patrick Heppler请共享您的db_表。此教程链接将帮助您Patrick:@AddWebSolutionPvtLtd还没有db_表。这只是在计划中。@Saurabhmisty角色不起作用,因为这需要为每个文档提供两个角色。您需要将角色赋予用户,如编辑、管理员、查看器等。@Patrick Heppler请共享您的db_表。此教程链接将帮助您Patrick:@AddWebSolutionPvtLtd还没有db_表。这只是在计划中。@SaurabhMistry角色不起作用,因为这需要为每个文档添加两个角色才能添加到此解决方案中,您可以将
->withPivot(…)->作为('permissions')
,现在您可以使用$document->permissions->read
,这使它更具可读性。@milo526对于延迟表示抱歉。您的解决方案非常有效!谢谢。若要添加到此解决方案,您可以将->withPivot(…)->设置为('permissions')
,现在您可以使用$document->permissions->read
,这使它更具可读性。@milo526抱歉延迟。您的解决方案非常有效!谢谢