我需要一个干净的解决方案,这就是为什么我要发布此内容。
所以我有一个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已保存为一行。如果这两列的值相同,则应该抛出错误。
什么是最好的清洁方法?
答案 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'
];
}