Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 3个模型之间的拉威尔关系?_Laravel_Eloquent - Fatal编程技术网

Laravel 3个模型之间的拉威尔关系?

Laravel 3个模型之间的拉威尔关系?,laravel,eloquent,Laravel,Eloquent,我需要在Laravel中定义3个模型之间的关系。 我拥有用户、文档和权限。一个用户可以有多个文档,并且一个文档可以分配给多个用户。这是简单的部分,一个多对多的关系 现在我有了一个权限表,有两个条目,读和写。 我不知道如何根据用户来分配文档的读写权限 例如: 用户1可以编写文档1和读取文档2 User2可以同时编写这两个代码 User3只能同时读取这两个文件 App\User::find(1)->documents()->save($document,

我需要在Laravel中定义3个模型之间的关系。 我拥有用户、文档和权限。一个用户可以有多个文档,并且一个文档可以分配给多个用户。这是简单的部分,一个多对多的关系

现在我有了一个权限表,有两个条目,读和写。 我不知道如何根据用户来分配文档的读写权限

例如: 用户1可以编写文档1和读取文档2 User2可以同时编写这两个代码 User3只能同时读取这两个文件

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抱歉延迟。您的解决方案非常有效!谢谢