Laravel 5查询生成器 - 附加" ON DUPLICATE KEY UPDATE"到一个insert()调用

时间:2016-05-26 03:35:30

标签: mysql laravel laravel-5 query-builder fluent

我有一个继承了Illuminate \ Database \ Query \ Builder的类,并为重复键更新时插入自定义方法。

有没有办法在insert()调用中添加后缀?

我已经四处查看了一下,在Laravel的查询构建器中,SQL查询的后缀或前缀没有太多资源。

如果可以避免,我希望将查询生成器中原始insert()方法的主体复制到我的自定义方法中,因为这不是一个好习惯。

任何帮助都表示赞赏。谢谢!

请注意我出于各种原因不使用Eloquent,但在此问题中解释太多,而且超出了范围。

2 个答案:

答案 0 :(得分:0)

我无法在查询构建器本身中找到任何方法(缺少“raw”,哪种方法错过了这一点)。但您可能希望查看“Eloquent”updateOrCreate()方法,例如在Laravel 5.1 Create or Update on Duplicate讨论,或Update Duplicate Data when insert data in laravel上的相关问题

https://gist.github.com/VadimGut/672da182921f70dfcea972e207e86676还有一个insertOnDuplicateKeyUpdate()函数的实现,它组装原始SQL并运行它。

答案 1 :(得分:-3)

尝试将其作为sql:

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