【发布时间】:2017-12-26 11:42:50
【问题描述】:
我们又来了,每次我写一个新的策略它都不起作用,原因不明。 我有一个投票系统,其中有一个投票数据透视表,它引用模型和用户以及额外的列('up_voted'、'down_voted')。 我的关系正常,如果我编写这段代码进行测试,我就可以了。我在数据库中设置了用户对模型 id = 1 的示例投票,因此此代码将返回“用户投票”,同时将 id 修改为 2,3、4,无论它将返回“用户未投票”。
$model_id = 1;
if($user->model_votes->contains('model_id', $model_id)){
dd('user voted');
}else{
dd("user didn't vote");
}
所以我想我会为此制定政策,这是我在 AuthServiceProvider 中正确注册的政策:
namespace App\Policies;
use App\Model;
use App\User;
class ModelPolicy
{
public function voteModel(User $user, Model $model)
{
if($user->model_votes->contains('model_id', $model->id)){
return false;
}else{
return true;
}
}
}
所以在控制器中我有这个:
$model = Model::findOrFail($id);
$this->authorize('voteModel', $model);
当然它不起作用,无论如何总是返回异常
【问题讨论】:
-
你有什么异常?
标签: php laravel exception authorization policy