2017-04-26 52 views
0

我想創建一個Laravel授權策略,Laravel授權策略然而,而不是檢查user->id我想檢查相關用戶的商業模式(如$user->business()->id創建使用的東西要麼不是「用戶> ID」

我試過在我的OrderPolicy中使用以下內容,但它不起作用。

OrderPolicy

class OrderPolicy 
{ 
    .... 
    public function edit(User $user, Order $order) 
    { 
     if ($user->business()->id === $order->business_id) { 
      return true; 
     } 
    }  
} 

刀片

... 
@can('edit', $business->orders()) 
Edit Link 
@endcan 
... 

有人能告訴我,我怎麼能正確地做到這一點?

+0

,什麼是'$米的商務>訂單()'...如果這是一個關係的方法,不返回模型。 – lagbox

+0

這是一種關係方法,我應該怎樣稱呼相關模型?從控制器沒有傳入我的視圖(因爲它沒有在任何地方使用) – Imran

+0

我的答案中的鏈接解釋瞭如何使用關係來獲取實際模型。 – lagbox

回答

0

假設business()是一種關係方法。

$user->business->id將是與用戶相關的業務模型的id

可能要檢查->business是否爲空。

如果您不想加載該關係,也可以直接查詢關係。 $user->business()->where('id', $order->business_id)->exists()

Laravel 5.4 Docs - Eloquent - Relationships - Relationship Methods vs Dynamic Properties

+0

肯定有一個相關的商業()',只是不知道如何檢查,而不是用戶 - >編號 – Imran

+0

它在我的回答 – lagbox

+0

這似乎並不奏效,我知道有記錄與用戶相關'訂單表中的業務'。有沒有一種方法可以調試,我已經嘗試在策略中使用'Log',但沒有行打印在我的日誌文件中。我的'AuthServiceProvider.php'中引用了正確的策略 – Imran

相關問題