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 如何限制透视表的访问?拉维尔_Laravel_Eloquent_Many To Many_Pivot_Relationships - Fatal编程技术网

Laravel 如何限制透视表的访问?拉维尔

Laravel 如何限制透视表的访问?拉维尔,laravel,eloquent,many-to-many,pivot,relationships,Laravel,Eloquent,Many To Many,Pivot,Relationships,我有桌子: 使用者 身份证 名字 公司 身份证 名字 公司/用户 公司id 用户id 表具有多对多关系 因为这对我来说是复杂的关系,所以当用户可以看到这个用户创建的公司时,我找不到方法来限制。(可能经验不足) 现在我有这个,但用户可以看到任何公司 公司控制器: 因此,请提示我如何让用户只能看到由该用户创建的公司。由于它是多对多关系,您可以将一个公司映射到多个用户,也可以将一个用户映射到多个公司。检查您是否没有错误地将公司分配给多个用户 上面的代码也可以这样写 public funct

我有桌子:

使用者

  • 身份证
  • 名字
公司

  • 身份证
  • 名字
公司/用户

  • 公司id
  • 用户id
表具有多对多关系

因为这对我来说是复杂的关系,所以当用户可以看到这个用户创建的公司时,我找不到方法来限制。(可能经验不足)

现在我有这个,但用户可以看到任何公司

公司控制器:


因此,请提示我如何让用户只能看到由该用户创建的公司。

由于它是多对多关系,您可以将一个公司映射到多个用户,也可以将一个用户映射到多个公司。检查您是否没有错误地将公司分配给多个用户

上面的代码也可以这样写

public function show($company_id)
{
    $company = Company::findOrFail($company_id);

    return view('company.settings', compact('company'));
}
您可以这样做:

public function show($company_id)
{
    $company = auth()->user()->companies()->findOrFail($company_id);
    return view('company.settings', compact('company'));
}

它将把公司范围扩大到当前登录的用户(通过
用户
模型上的多对多关系)。如果没有找到,它将返回404。

您是否在
用户
模型上定义了关系?公共函数companies(){return$this->belongTomany(Company::class,'Company_User');}。public function users(){return$this->belongtomany(User::class,'company_User');}我错了,你需要在
公司
模型上使用它,你也有吗?“这个用户”是什么意思?当前登录用户?实际上,关系是有效的,这不是我案例中的问题。在我的案例中,用户可以创建多个公司,他们可以向公司添加用户,因此一个公司可以有多个用户,用户可以有多个公司。这就是为什么我对用户和公司都有关系belongtosay()。我正在使用透视表进行此操作
public function show($company_id)
{
    $company = auth()->user()->companies()->findOrFail($company_id);
    return view('company.settings', compact('company'));
}