我对Laravel来说相对较新,最近遇到了一个我似乎无法动摇的问题。
我有3个表格,其中包含此帖子的相关字段:
由于复杂性,我被建议通过策略处理以下内容,而不是中间件(但是,如果你们其中一个人有建议,我当然愿意调查:))。无论如何,我想要做的是制定一项政策(我将在下面列出我现有的政策),如果用户连接到任何数量的公司,他们可以看到附加到这些公司的所有货物(和在我的发货,用户和公司模型上,我确实建立了关系" belongsToMany")。
假设以下
Shipment #|Company ID(pivot table: company_shipment)
1 | 1
2 | 1
3 | 2
4 | 3
然后,通过数据透视表(company_user)与公司1和2关联的用户#1可以看到货件1,2和3,但不能看到货物。
这是我到目前为止创建的ShipmentPolicy:
<?php
namespace App\Policies;
use App\User;
use Auth;
use App\Shipment;
use App\Company;
use Illuminate\Auth\Access\HandlesAuthorization;
class ShipmentPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can view the shipment.
*
* @param \App\User $user
* @param \App\Shipment $shipment
* @return mixed
*/
public function view(User $user, Shipment $shipment)
{
$user_company = Auth::user()->companies()->pluck('id');
$shipment_company = $shipment->companies->pluck('id');
return $shipment_company == $user_company;
}
/**
* Determine whether the user can create shipments.
*
* @param \App\User $user
* @return mixed
*/
public function create(User $user)
{
//
}
/**
* Determine whether the user can update the shipment.
*
* @param \App\User $user
* @param \App\Shipment $shipment
* @return mixed
*/
public function update(User $user, Shipment $shipment)
{
//
}
/**
* Determine whether the user can delete the shipment.
*
* @param \App\User $user
* @param \App\Shipment $shipment
* @return mixed
*/
public function delete(User $user, Shipment $shipment)
{
//
}
}
现在,我的问题来自这样一个问题:如果用户被添加到一家公司,他们可以很好地查看货件,但是,如果他们被添加到2(这是我打扰测试),它失败并返回错误。
所以我的问题是: