how to unique data group validation in form request laravel

71 Views Asked by At

I have two column 'book_name' & 'writer' in 'books' table. When new data insert i want to check the same book and writer not will be added. But i dont understand how to do this. here is my code.

public function rules()
{
    return [
        'book_name' => 'required|unique:books,book_name,' . $this->id,
        'writer' => 'required|unique:books,writer,' . $this->id,
    ];
}
2

There are 2 best solutions below

0
Matt On

According to laravel documentation, unique rule is applied by defining the rule, stating the table and column name e.g.

unique:table,column

alternativelly if you're using eloquent models it can be

unique:path\to\model,column

The . $this->id constructor should not be needed.

0
mahbub On
public function rules()
{
    return [
        'book_name' => [
            'required',
            Rule::unique('books')->where(fn ($query) => $query->where('writer', request('writer')))
                ->ignore($this->id)
        ],

        'writer' => 'required',
    ];
}