当前位置: 首页 > 知识库问答 >
问题:

在laravel中插入数据时更新重复数据

太叔烨霖
2023-03-14

嗨,我已经搜索并试图解决这个问题,但未能找到解决方案,抱歉占用了你的时间。我在laravel中插入一组数据与查询生成器一次插入多个数据。

DB::table('table')->insert(
array(
    array(
        'col1' => 'data1',
        'col2' => 'data1'
    ),
    array(
        'col1' => 'data2', 
        'col2' => 'data2'
    ),
)
);

有没有办法检查表中的col1, col2值是否存在,然后更新,否则插入。如果所有数据成功更新或插入,我想从查询结果中返回truefalse。我想解决它与laravel查询生成器。谢啦

共有1个答案

宰子琪
2023-03-14

据我所知,Laravel查询生成器不支持这一点。您可以执行原始MySQL查询:

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

但这是非常混乱和MySQL特有的。

相反,我建议您使用雄辩的ORM:

// Retrieve the flight by the attributes, or create it if it doesn't exist...
$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']);

http://laravel.com/docs/5.1/eloquent#inserting-和更新模型

 类似资料:
  • 我有这部分代码: 现在想返回插入或更新的数据作为响应,但是在谷歌上看到很多帖子后,所有尝试都失败了,我怎么能这样做?没有上次插入的id 但返回布尔值: 如何在雄辩的ORM laravel最后插入id 大多数主题想要返回,但我想要所有数据。

  • 我已经创建了复制分支用户权限的方法。权限通常为0到120个项目。运行此方法将此(0到120)项插入到7个用户ID需要35-55秒才能插入到表中。 我需要优化这个过程,因为数据插入的性能很慢。我在想如果超过10个用户,那么这个过程会花费太长时间。有没有办法提高插入数据的性能速度? 提前谢谢你!

  • 这里是一个假设但类似的场景,与我试图使用Kafka流实现的场景相似。 我有流数据,销售,我想丰富不经常变化的查找数据,例如用户和项目,我计划为它创建KTable。我计划使用connect Sink将这些丰富的数据推送到一个主题和搜索引擎。 我如何确保用户/项目数据的更新也会触发过去销售数据的丰富,而不仅仅是在流中摄入的新数据。据我所知,KTable插入/更新不会触发对流的过去数据的任何重新处理。

  • 我的Mysql数据库中有一些历史数据表。 我想在同一张表中为另一天重复一天的历史数据。 表结构,带有一些示例数据: 我想重复这些ID和值,但需要一个新的日期-例如2012-05-01。即增加: 我觉得应该有一个直截了当的方法来做这件事...我试过使用UPDATE语句和子查询,并使用多个左联接,但还没有达到目的。 我能怎么做吗? 编辑:以澄清...-我不想将这些添加到新表中-我也不想更改表中的现有记

  • 这里一个非常常见的问题是如何执行upsert,MySQL称之为,标准支持将其作为操作的一部分。 鉴于PostgreSQL不直接支持它(在PG9.5之前),您如何做到这一点?考虑以下几点: 现在假设您要“upsert”元组,,那么新的表内容将是: 这就是人们在讨论时所谈论的。至关重要的是,在同一表上存在多个事务的情况下,任何方法都必须是安全的--要么使用显式锁定,要么以其他方式防止产生的竞争条件。

  • 问题内容: 几个月前,我从关于Stack Overflow的答案中学到了如何使用以下语法在MySQL中一次执行多个更新: 我现在已经切换到PostgreSQL,显然这是不正确的。它指的是所有正确的表,因此我认为这是使用不同关键字的问题,但是我不确定在PostgreSQL文档的哪个地方覆盖了这个问题。 为了澄清,我想插入几件事,如果它们已经存在,请对其进行更新。 问题答案: 自9.5版起的Postg