Проверьте, существует ли значение в базе данных или нет в laravel

У меня есть система пожеланий, где я сохраняю 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>

Благодарю.

0

Решение

Вы можете использовать функцию 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
}

}

1

Другие решения

Вы могли бы использовать 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 значения, он создаст новый.

Или вы можете зарегистрировать пользовательское правило проверки как вы уже предложили.

3

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector