Reputation: 6474
I need a clean solution that's why I'm posting this.
So I have a formrequest validation which is the following:
public function rules()
{
return [
'restaurant_id' => 'required',
'rating' => 'required',
'comment' => 'required',
'visited_at' => 'required|date'
];
}
in controller, I also have user_id but request doesn't contain it. Now, I want to change the above rules so that user_id and restaurant_id both together will only be created only once. So for example . User_id 1 and restaurant_id 2 got saved as a row. If the same values come for these two columns, it should throw an error.
What would be the best and clean way?
Upvotes: 0
Views: 27
Reputation: 14318
You can expand the exists
rule like this:
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'
];
}
Upvotes: 1