2017-06-02 8 views
0

私は、認証されたユーザーがコンサルタントを削除できるかどうかを確認するポリシーを持っています。Laravelポリシーが不正に返される

残念ながら、レスポンスは常に不正なので、わかりません。

ポリシー機能(ClinicConsultantPolicy):

public function delete(User $user, Consultant $consultant) 
    { 
     $consultant_clinic_id = $consultant->clinic_id; 
     return $user->clinic->id === $consultant_clinic_id; 

    } 

コントローラー上記の関数を呼び出す(ClinicConsultantController):

public function destroy($id) 
    { 
     $consultant = Consultant::find($id); 
     $this->authorize('delete', $consultant); 

     Consultant::find($id)->delete(); 

     return redirect('clinic/consultants'); 
    } 

もしI出力ポリシーが一致しようとしている二つの変数(ユーザの診療所IDおよびコンサルタントの診療所ID)は、両方とも2に等しい。

しかし、明らかにそのうちの1つはポリシーに達したときに2でないか、おそらく定義されていませんが、なぜわかりませんか?ご協力いただき誠にありがとうございます。

+1

ポリシーを登録しましたか?削除ポリシーに 'dd($ user-> clinic-> id、$ consultant-> clinic_id)'を追加して、呼び出されていることを確認して値を確認してください。 – Sandeesh

+0

あなたは正しかった、私はポリシーを登録することを忘れてしまった!そのような見落とし!多くのありがとう@Sandeesh。 – Ben

答えて

0

私には$user->clinic->idを呼び出すとモデル関係のように見えます。関係の実装を提供するのは非常に役に立ちます。あなたの関係が1対多に設定されている場合にのみ、 $user->clinic()->first()->idと書くことをお勧めします。乾杯。

関連する問題