Laravel - 政策多重价值 - BelongsToMany

时间:2017-01-17 07:29:25

标签: laravel eloquent laravel-5.2 laravel-5.3 policy

我有三个表:users,files和file_project。 每个文件都有一个user_id。

管理员可以删除每个文件,但只删除用户上传的文件。

view.blade.php

enter image description here

文件表

enter image description here

file_project表

enter image description here

在我提交表格后,我得到了这些:

[
    "23",
    "22",
    "24"
]

所以,现在我可以从Controller中删除这些文件。 这是控制器:

public function deleteSelected (Request $request)
{
    $files = $request->files;
    File::destroy($files);

    return redirect()->back();
}

如何使用策略并检查多个ID?

我现在可以使用$ files

中的ID识别文件表中的记录
public function deleteSelected (Request $request)
{
    $files = $request->files;
    return $list = File::find($files);
}

响应是:

enter image description here

任何帮助?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您只想允许有权限的用户删除该文件,您可以使用以下内容:

public function deleteSelected (Request $request)
{
    $files = $request->files;
    $loggedInUser = Auth::user();
    if(!$loggedInUser->isAdmin() || File::whereIn('id', $files)->where('user_id', $loggedInUser->id)->count() < count($files)) {
        abort(403);
    }
    File::destroy($files);

    return redirect()->back();
}

然后在用户模型中添加isAdmin的逻辑