Php 在Laravel中编写权限代码的最佳位置

Php 在Laravel中编写权限代码的最佳位置,php,laravel,laravel-5.4,Php,Laravel,Laravel 5.4,在Laravel中进行数据库更新之前,检查某些条件的最佳位置是哪里 在表单提交期间,我使用表单验证类来处理这些请求验证 我有表用户,奖励,奖励 在这里,当我将用户分配给奖励时,在某些情况下,最多一个用户可以分配一个奖励,在尝试将用户分配给奖励时,我必须检查是否已经分配了用户 我在我的控制器中编写代码并抛出403异常,如下所示 //get award $award = Award::with('type')->findOrFail($id); //get award

在Laravel中进行数据库更新之前,检查某些条件的最佳位置是哪里

在表单提交期间,我使用
表单验证类
来处理这些请求验证

我有表
用户
奖励
奖励

在这里,当我将用户分配给奖励时,在某些情况下,最多一个用户可以分配一个奖励,在尝试将用户分配给奖励时,我必须检查是否已经分配了用户

我在我的控制器中编写代码并抛出403异常,如下所示

    //get award
    $award = Award::with('type')->findOrFail($id);
    //get award assigned members by department
    $userCount = AwardUser::join('users', 'users.id', 'award_user.user_id')
            ->where('award_id', $id)
            ->where('users.department_id', $departmentId)
            ->count();
    //not allowed to assign more than one if max person > 0
    if ($award->type->max_person > 0 && $userCount > 0) {
        abort(403, 'No more user allowed to assign!');
    }
    $award->members()->attach($userId, ['created_by' => Auth::user()->id]);
}

这是一个好方法还是我应该遵循其他方法

自定义验证器可能是最合适的。还有表单请求的
authorize
函数。在表单验证器类中,编写数据库操作好吗?没有理由不能。内置的Laravel
存在
验证程序执行数据库查询,例如。@ceejayoz在列出奖励时,我必须在URL中传递参数,并根据该参数筛选奖励。现在我在控制器本身中进行这些过滤。好吗?非常感谢您的建议。定制验证器可能是最合适的。还有表单请求的
authorize
函数。在表单验证器类中,编写数据库操作好吗?没有理由不能。内置的Laravel
存在
验证程序执行数据库查询,例如。@ceejayoz在列出奖励时,我必须在URL中传递参数,并根据该参数筛选奖励。现在我在控制器本身中进行这些过滤。好吗?如蒙指教,不胜感激。