如何避免插入重复记录

2023-11-30

我正在使用 Laravel 5.6.29

if ( HarmFlag::where('post_id', '=', $postId)->where('harm_id', '=', $harm_id)->get()->isEmpty() ) {
      HarmFlag::create([
          'post_id' => $postId,
          'harm_id' => $harm_id,
          'gif_flag' => $gif_flag
      ]);
  } else {
      $harmFlag = HarmFlag::where('post_id', '=', $postId)->where('harm_id', '=', $harm_id)->first();
          $harmFlag->gif_flag = $gif_flag;
          $harmFlag->save();
     }

现在可以看到有重复的记录harm_id=18604 and harm_id=18605,但根据我的编码,它不应该发生。

Update

也将代码更改为

$harmFlag = HarmFlag::firstOrNew(['post_id' => $postId, 'harm_id' => $harm_id]);
$harmFlag->gif_flag = $gif_flag;
$harmFlag->save();

但仍然得到重复的条目。

有趣的是,对于每个重复记录,时间戳也是相同的。所有这些情况也只有第二条记录。

移民

Schema::create('harm_flags', function (Blueprint $table) {
    $table->increments('id');
    $table->unsignedInteger('post_id');
    $table->unsignedInteger('harm_id');
    $table->boolean('gif_flag')->default(0);

    $table->timestamps();
    $table->foreign('post_id')->references('post_id')->on('posts');
    $table->foreign('harm_id')->references('harm_id')->on('base_harms');
});

Update 2

变成

HarmFlag::updateOrCreate(
          ['post_id' => $postId, 'harm_id' => $harm_id],
          [
              'gif_flag' => $gif_flag,
          ]
 );

但仍然得到重复的记录。


你不需要检查isEmpty, 您可以使用firstOrNew() or updateOrCreate() methods

$harmFlag = HarmFlag::firstOrNew(['post_id' => $postId, 'harm_id' => $harm_id]);
$harmFlag->gif_flag = $gif_flag;
$harmFlag->save();

or

$harmFlag = HarmFlag::updateOrCreate(['post_id' => $postId, 'harm_id' => $harm_id]);
$harmFlag->gif_flag = $gif_flag;
$harmFlag->save();

请检查文档https://laravel.com/docs/5.3/eloquent#insert-update-delete

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免插入重复记录 的相关文章

  • 使用 ImageMagick (PHP) 将 2 个图像并排合并为 1 个图像

    我认为这是一件容易的事 我有 2 张图片 JPG 我希望它们合并成一张图片 其中 2 张图片并排 所以我有图片 A 和图片 B 我想要图片 AB 并排 两个图像具有相同的宽度和高度 在本例中 宽度 200px 高度 300px 但是第二个图
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • Symfony2:为什么请求传递到受 Symfony2 中 AppCache 影响的 Kernel.Terminate EventListener

    在我的 Symfony2 2 应用程序中 我使用 onKernelTerminate EventListener 以便我可以在渲染响应后进行一些 繁重 处理 以便用户收到更快的响应时间 在我的控制器中 我在请求上设置了一个属性 以便当事件侦
  • Ajax 没有将我重定向到下一页

    我正在尝试将单击的图像的 ID 传递到下一页 当我开发代码时 它没有将我重定向到下一页 当我单击 F12 并检查网络中的 POST 时 它显示变量已正确传递到下一页 如附图所示 但它没有将我重定向到下一页 所以现在我知道变量在下一页中正确传
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 在 PHP 中比较两个对象的最快方法是什么?

    假设我有一个对象 在本例中为 User 对象 并且我希望能够使用单独的类来跟踪更改 用户对象不必以任何方式改变它的行为才能发生这种情况 因此 我的单独的类创建它的 干净 副本 将其存储在本地某个位置 然后可以将 User 对象与原始版本进行
  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • 如何在HTML中的PHP中注释掉HTML和PHP?

    这是我想注释掉的一行代码 h1 class post title a href title a h1 一种流行的注释方法是分别注释 html 和 php 有一个更好的方法吗
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 检查 PHP 中的字符串长度

    我有一个长度为 141 个字符的字符串 使用下面的代码我有一个if如果字符串大于或小于 140 则语句返回一条消息 libxml use internal errors TRUE dom new DOMDocument dom gt loa
  • 如何在多次尝试后延迟登录尝试 (PHP)

    我正在开发一个用 PHP 构建的相当大的网站 该网站可能会有很多用户 我正在寻找一种方法来保护登录屏幕免受自动尝试的影响 我已经在注册表中添加了验证码检查 但还想进一步强化网站 据我所知 StackOverflow 上也有类似的问题 而且我
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • PHP 扩展开发入门 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 请推荐有关 PHP 低 级 modules 编程接口的帮助文章或教程 搜索我的书签 我发现的唯一链接是
  • 使用 json_encode() 函数在 PHP 数组中生成 JSON 键值对

    我正在尝试以特定语法获取 JSON 输出 这是我的代码 ss array 1 jpg 2 jpg dates array eu gt 59 99 us gt 39 99 array1 array name gt game1 publishe
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • PHP 中的引用

    我正在编写一个自定义博客引擎 并且希望拥有类似于 Wordpress 的引用 我可以查看 WordPress 源代码 但我真的更喜欢某种教程 但到目前为止我还没有找到 有没有关于在 PHP5 中实现 trackbacks 或 pingbac
  • 如何将 Smarty 3 包含到 Laravel 4 中?

    我是 Laravel 的新手 所以仍在习惯这些概念 但是我有大约 10 年的使用 Smarty 的经验 所以我希望利用这一点 除了事实上 Blade 似乎缺乏太多我发现有用且在 Smarty 中开箱即用的功能 但无论如何除了这个问题的要点之
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • 如何使用 flex json 序列化对象列表?

    我有一个如下所示的对象列表 List
  • 动态链接标签无法打开网站

    我最近开始使用动态组件 它工作得很好 直到我开始使用动态链接标签 所以这是我的问题 我想通过标签链接打开一个网站 但每次我尝试这样做时 它都会破坏程序并给出错误 System ComponentModel Win32Exception pr
  • JavaBean“useBean类属性classes.UserData的值无效”[重复]

    这个问题在这里已经有答案了 我有两个 JSP 和一个 JavaBean 无法正常工作 我使用的是Tomcat 6 0 第一个 JSP 是 GetName jsp 位于 C Tomcat webapps app1 GetName jsp
  • 从 python 启动 nano 作为子进程,捕获输入

    我试图从Python内部启动一个文本编辑器 nano 让用户输入文本 然后在写出后捕获文本 Control O 我没有与subprocess之前没有模块 也没有管道 所以我不知道下一步要尝试什么 到目前为止我有这个代码 a subproce
  • PDFBOX 具有粗体和普通文本的同一流

    好吧 我一直在使用 PDFBox 但我仍然完全不理解它 但我已经阅读了文档 使用字体和其他一些地方 但我找到了如何从 PDF 中获取文本 它是风格 但我正在创造它 而不是阅读它 我正在尝试做点什么 Like 这 在同一行上有粗体和普通文本
  • 检查 C 中文件是否存在的最佳方法是什么?

    有没有比简单地尝试打开文件更好的方法 int exists const char fname FILE file if file fopen fname r fclose file return 1 return 0 查找access 函数
  • 映射多对多关系

    我在让实体框架处理数据模式中的多对多关系时遇到一些问题 这是我的模型 public class User public int UserId get set public int Username get set public IEnume
  • 我如何找到哪个域从我的服务器请求 iframe 并将域保存在数据库上

    我有一组不同的网站请求iframe由于各种原因从我的服务器上删除了 html 文件 是否可以追踪onload哪个域请求iframe然后将其保存到数据库中 如果该域已存在 则不要将其添加到数据库中 请求 iframe 内容的不是域 而是用户的
  • sqlite 日期排序

    我正在将文件解析到 sqlite 数据库中 其中包含 YYYY MM DD 格式的日期 我想将条目存储到 sqlite 中 以便我可以按日期对条目进行排序 字符串不切割它 在 sqlite 中存储和排序日期的正常协议是什么 应该将日期转换为
  • 舍入错误?

    在我的课程中 我被告知 连续值在内存中近似表示 因此使用浮点数进行计算会涉及舍入误差 这些是位模式中的微小差异 因此测试e f是不安全的 如果e and f是花车 参考Java 这是真的 我使用了比较语句doubles and floats
  • 我可以在 Pool.imap 调用的函数中使用多处理队列吗?

    我正在使用 python 2 7 并尝试在自己的进程中运行一些 CPU 繁重的任务 我希望能够将消息发送回父进程 以使其了解进程的当前状态 多处理队列似乎对此很完美 但我不知道如何让它工作 所以 这是我的基本工作示例 不使用队列 impor
  • 为什么有界类型参数会出现“java.lang.ClassCastException:[Ljava.lang.Object;无法转换为”错误,而形式类型参数则不会?

    由于 java 没有通用数组 因此我使用将对象数组转换为类型参数的常规技巧 当我有一个像这样的正式类型参数时 这工作得很好
  • cumsum() 从最后一个条目开始向后移动

    我想计算从最后一个值开始向后移动的数字向量的累积和 标准cumsum R 中的函数通常从第一个值开始并向前移动 如简单的示例所示 cumsum 1 5 1 3 6 10 15 但我想要一个像这样的结果 15 14 12 9 5 有没有R函数
  • mysql 中每组的行数

    我想根据这种情况生成查询结果 可以根据crew id和类型创建行号 id crew id amount type 1 4 1000 AUB 2 4 1500 AUB 3 5 8000 CA 4 4 1000 CA 5 5 1000 AUB
  • 空传播替换空检查先验条件语句

    看到一个类似的问题 我想知道以下表达式是否 if attribute null attribute Description input 与以下零传播变体的行为 几乎 相同 if attribute Description input 到目前
  • 使用命名空间和共享内存字典时关闭管理器错误“AttributeError:'ForkAwareLocal'对象没有属性'连接'”

    我在尝试着 在进程之间共享数据帧 根据对该数据帧执行的计算 但不更改 更新共享字典 我正在使用一个multiprocessing Manager 创建一个dict在共享内存中 用于存储结果 和Namespace存储 共享我想要读取的数据框
  • 在 C# 中按键模拟按钮单击

    好的 我正在制作一个 Tic Tac Toe 游戏来帮助我学习 C 我正在尝试为其添加一些功能 因此我希望人们能够在计算机上使用数字键盘来模拟单击按钮 这是我所拥有的 但当我使用数字键盘时 按钮不会单击 你们中有人能看出原因吗 start
  • 可变参数模板复杂继承生成

    尝试了一下可变参数模板 看看可以用它们做什么 我发现自己想知道一些事情 假设我有一个类 它可以将其他几个类作为模板参数 每个类都有一个嵌套类 我们称之为nested class template
  • Nil 与预期的参数类型选择器不兼容

    在从 Swift 2 3 转换为 Swift 3 时 我收到以下代码行的错误 var contactButton UIBarButtonItem return self CustomRightItem icon nav nls contac
  • 如何避免插入重复记录

    我正在使用 Laravel 5 6 29 if HarmFlag where post id postId gt where harm id harm id gt get gt isEmpty HarmFlag create post id