如何验证两列

时间:2019-03-29 17:44:41

标签: laravel

我需要一个干净的解决方案,这就是为什么我要发布此内容。

所以我有一个formrequest验证,如下所示:

 public function rules()
    {
        return [
            'restaurant_id' => 'required',
            'rating' => 'required',
            'comment' => 'required',
            'visited_at' => 'required|date'
        ];
    }

在控制器中,我也有user_id,但请求中不包含它。现在,我想更改上述规则,以便将user_id和restaurant_id一起仅创建一次。例如。 User_id 1和restaurant_id 2已保存为一行。如果这两列的值相同,则应该抛出错误。

什么是最好的清洁方法?

1 个答案:

答案 0 :(得分:1)

您可以像这样展开exists规则:

public function rules()
{
    $user = $this->user();

    return [
        'restaurant_id' => [
            'required',
             Rule::exists('YOUR_TABLE_NAME')->where(function ($query) use ($user) {                
                 $query->where('restaurant_id', request('restaurant_id'))
                       ->where('user_id', $user->id);
             })
        ],
        'rating' => 'required',
        'comment' => 'required',
        'visited_at' => 'required|date'
    ];
}