У меня есть система пожеланий, где я сохраняю user_id
а также product_id
и я хочу проверить перед сохранением в таблицу пожеланий, чтобы увидеть, сохранил ли пользователь этот продукт там или нет.
Я нашел несколько вопросов и статей по этому поводу, но все они проверяют только 1 значение, а не оба, мне нужно проверить auth::user()->id
а также product->id
оба перед сохранением.
вот мой метод магазина:
public function store(Request $request)
{
//Validating title and body field
$this->validate($request, array(
'user_id'=>'required',
'product_id' =>'required',
));
$wishlist = new Wishlist;
$wishlist->user_id = $request->user_id;
$wishlist->product_id = $request->product_id;$wishlist->save();
return redirect()->back()->with('flash_message',
'Item, '. $wishlist->product->title.' Added to your wishlist.');
}
это моя форма:
<form action="{{route('wishlist.store')}}" method="post">
{{csrf_field()}}
<input type="text" name="user_id" value="{{Auth::user()->id}}" hidden>
<input type="text" name="product_id" value="{{$pdts->id}}" hidden>
<button type="submit" class="btn btn-success">
<i class="fa fa-heart"></i>
</button>
</form>
Благодарю.
Вы можете использовать функцию isset, чтобы проверить, установлено свойство или нет
public function store (Request $request)
{
// backend validator goes code here
$status=Wishlist::where('user_id',Auth::user()->id)
->where('product_id',$request->product_id)
->first();
if(isset($status->user_id) and isset($request->product_id))
{
//Return to already added page
}
else
{
//Return to successfully added page
}
}
Вы могли бы использовать firstOrCreate()
и забудьте о проверке составного ключа.
public function store(Request $request)
{
$data = $request->validate([
'user_id' => 'required',
'product_id' => 'required'
]);
$wishlist = Wishlist::firstOrCreate($data);
return redirect()
->back()
->with('flash_message', 'Item, ' . $wishlist->product->title . ' added to your wishlist.');
}
firstOrCreate()
Метод попытается найти запись из вашей таблицы пожеланий с заданными данными и, если она не найдена, создаст новую и вернет ее.
Другими словами, если он не может найти запись с данным user_id
а также product_id
значения, он создаст новый.
Или вы можете зарегистрировать пользовательское правило проверки как вы уже предложили.