Laravel 替换现有数据库值 - 收藏夹

我正在尝试在文章上设置收藏夹按钮。以下代码有效...


public function favouriteNotfavouriteArticleParent(Request $request){


    $data = [];

    $data['user_id'] = Auth::id();

    $data['person_id'] = GetPersonData()['id'];

    $data['article_id'] = $request->get('article_id');

    $data['action'] = $request->get('action');

    UserFavourites::updateOrCreate($data,$data);


}

但是,我希望它首先检查为该文章 ID 设置的任何现有值。如果它有最喜欢的集合并且没有点击,它应该删除最喜欢的表格行。


此刻,它只是为最喜欢和最不喜欢添加了一行。我附上了当前 sql 行为的屏幕截图。


非常感谢任何帮助!

http://img1.mukewang.com/62c8ea8b00012d2707970053.jpg

慕斯709654
浏览 116回答 1
1回答

潇湘沐

UpdateOrCreate有两个参数。第一个参数是要查找的属性数组,第二个参数是要更改的属性数组。如果数据库中没有具有来自第一个数组的属性的行,则数组基本上将被组合以在数据库中创建一个新行。要实现您的目标,您可以执行以下操作:UserFavourites::updateOrCreate([    'article_id' => $request->input('article_id'),    'user_id'    => auth()->id(),], [    'person_id' => GetPersonData()['id'],    'action'    => $request->input('action'),]);上面将查找与 匹配的行,article_id然后user_id更新该行的person_idandaction或(如果该行不存在)创建一个包含所有属性的新行。
打开App,查看更多内容
随时随地看视频慕课网APP