Nika Kurashvili
Nika Kurashvili

Reputation: 6474

how to make validation for two columns

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

Answers (1)

nakov
nakov

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

Related Questions