0

我有一个策略来检查经过身份验证的用户是否可以删除顾问。

不幸的是,响应总是未经授权的,我不确定为什么!

政策功能(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');
  }

如果我输出策略试图匹配的两个变量(用户的诊所 ID 和顾问的诊所 ID),两者都等于 2。

但是,当它达到政策时,显然其中一个不是 2,或者可能是未定义的,但我不确定为什么?非常感谢您的帮助。

4

1 回答 1

0

对我来说,调用时看起来像是模型关系问题$user->clinic->id。如果您提供关系实现,那将非常有帮助。$user->clinic()->first()->id如果您的关系设置为一对多,我只能建议写作 。干杯

于 2017-06-02T16:12:54.507 回答