Laravel:使用Trait和Scope检查路线中是否填写了该字段

问题描述

我有一个API,可以根据表中的附加列实现多租户。

为此,我创建了一个实现 static :: addGlobalScope()和static :: creating()。

我有一个user_idXtenant_id表。在此表中,我存储用户具有的访问权限。

我的路线如下:

Route::get('{tenant_id}/products',function ($tenant_id) {
        return App\Products::where(['tenant_id' => $tenant_id])->get();
    })->middleware('role_or_permission:admin|seller|get-products');

Route::get('products',function () {
        return App\Products::get();
    })->middleware('role_or_permission:admin|seller|get-products');

这个想法是,在第一个途径中,将验证用户是否有权访问tenant_id,并且如果他具有访问权,则仅返回该tenant_id的产品(此处可以使用策略来解决问题)。

另一方面,第二条路线必须返回用户有权访问的所有tenant_id的所有产品。为此,我使用static :: addGlobalScope()设置用户可以通过以下方式访问的租户:

$builder->whereIn('tenant_id',$tenants);

问题是,如果在模型中填写了tenant_id,如何检查GlobalScope。因此,如果存在,则仅检查许可,如果不存在,则包括用户有权访问的tenant_id。

我希望我能够充分举例说明这个问题。

非常欢迎任何帮助。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)