Php 若数据库中存在值,则不保存Laravel

Php 若数据库中存在值,则不保存Laravel,php,laravel,laravel-5.5,Php,Laravel,Laravel 5.5,我正在创建一个愿望列表,用户可以在其中保存自己的产品并保存它们。我想要的是,用户不能多次保存产品。 所以,我要做的是,如果数据库中存在product_id,我不想保存新记录 这是我的代码,我做错了什么 这个怎么样 public function addWishlist(Wishlist $wishlist) { $userId = request('user_id'); $productId = request('product_id'); $found = Wis

我正在创建一个愿望列表,用户可以在其中保存自己的产品并保存它们。我想要的是,用户不能多次保存产品。 所以,我要做的是,如果数据库中存在product_id,我不想保存新记录

这是我的代码,我做错了什么

这个怎么样

public function addWishlist(Wishlist $wishlist) {  
    $userId = request('user_id');
    $productId = request('product_id');

    $found = Wishlist::where('user_id', $userId)->where('product_id', $productId)->count();

    if($found == 0) {
        $wishlist->user_id = $userId;
        $wishlist->product_id = $productId;
        $wishlist->save();
        return redirect()->back();
    }
}
您可以使用firstOrNew,并且需要检查用户id和产品id的组合

    $wishlist::firstOrNew(array('user_id' => request('user_id'),'product_id'=>request('product_id')));
    $wishlist->user_id = request('user_id');
    $wishlist->product_id = request('product_id');
    $wishlist->save();
    return redirect()->back();

你试过First或Create吗

 $user = User::firstOrCreate(['email' => $email])

updateOrCreate已经有了一个功能强大的函数。使用first或create,然后检查wasnrecentlycreated,其中的'product\u id'!==$愿望列表->产品标识-您对这种情况有何期望?它将从WISHLIST中选择所有项目,条件为“工作不正常”。如果产品标识重复,则保存记录。所以,我也遇到了同样的问题,你注意到这一行了吗?你需要检查用户id和产品id的组合吗@danhergirI只需要检查产品id。我更改了您的代码,但如果您不检查用户id意味着它不起作用。如果用户选择一个产品意味着。B用户不能选择该产品。可以吗@danhergirNo,我的意思是,如果用户将该产品添加到愿望列表中,该用户就不能再这样做了。我不明白为什么,但如果产品id的值保存在数据库中,它会一直保存记录。谢谢,但如果更改我调用此函数的代码,那将是一个混乱。@danhergir我更新了我的答案,您可以在代码中进行这些更改。应该是你做的。谢谢。
    $wishlist::firstOrNew(array('user_id' => request('user_id'),'product_id'=>request('product_id')));
    $wishlist->user_id = request('user_id');
    $wishlist->product_id = request('product_id');
    $wishlist->save();
    return redirect()->back();
 $user = User::firstOrCreate(['email' => $email])