Php 检查值是否存在于数据库中或不存在于laravel中
我有一个愿望列表系统,在这里我保存了Php 检查值是否存在于数据库中或不存在于laravel中,php,laravel,Php,Laravel,我有一个愿望列表系统,在这里我保存了user\u id和product\u id,我想在保存到愿望列表表之前检查一下,看看用户是否已经在那里保存了该产品 我发现了一些关于这方面的问题和文章,但它们都只验证1个值,而不是同时验证2个值,我需要在保存之前检查auth::user()->id和product->id 以下是我的存储方法: public function store(Request $request) { //Validating title and body f
user\u id
和product\u id
,我想在保存到愿望列表表之前检查一下,看看用户是否已经在那里保存了该产品
我发现了一些关于这方面的问题和文章,但它们都只验证1个值,而不是同时验证2个值,我需要在保存之前检查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>
{{csrf_field()}}
谢谢。您可以使用并忘记验证复合密钥
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()
方法将尝试从您的wishlists表中查找包含给定数据的记录,如果没有找到任何记录,它将创建一个新记录并返回它
换句话说,如果它找不到具有给定用户id
和产品id
值的记录,它将创建一个新记录
或者,您可以注册一个类似于建议的密钥。您可以使用并忘记验证复合密钥
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()
方法将尝试从您的wishlists表中查找包含给定数据的记录,如果没有找到任何记录,它将创建一个新记录并返回它
换句话说,如果它找不到具有给定用户id
和产品id
值的记录,它将创建一个新记录
或者,您可以注册一个类似于建议的属性。您可以使用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
}
}您可以使用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
}
}
$this->validate
,你不能添加吗?@BagusTesa如果我添加了exist,那么即使用户有1个愿望列表,也不能添加第二个,因为他的id已经存在,我需要的是将用户id和产品id if==与新id进行比较,如果不添加它,则显示错误。因此我需要检查这两个id'sRavel不提供类似于此的现成验证。您需要创建一个自定义验证规则-检查文档以获取更多信息,如果您想确保数据库中存在给定的用户id/产品id对,可以使用exists
。不幸的是,没有内置的规则像not\u exists
$this->validate
,你不能添加吗?@BagusTesa如果我添加exist,那么即使用户有一个愿望列表,也不能添加第二个,因为他的id已经存在了,我需要的是将用户id和产品id if==与新id进行比较,如果不添加它,则显示错误。因此我需要检查这两个id'sRavel不提供类似于此的现成验证。您需要创建一个自定义验证规则-检查文档以获取更多信息,如果您想确保数据库中存在给定的用户id/产品id对,可以使用exists
。不幸的是,没有像not\u这样的内置规则存在