我有一个继承了Illuminate \ Database \ Query \ Builder的类,并为重复键更新时插入自定义方法。
有没有办法在insert()调用中添加后缀?
我已经四处查看了一下,在Laravel的查询构建器中,SQL查询的后缀或前缀没有太多资源。
如果可以避免,我希望将查询生成器中原始insert()方法的主体复制到我的自定义方法中,因为这不是一个好习惯。
任何帮助都表示赞赏。谢谢!
请注意我出于各种原因不使用Eloquent,但在此问题中解释太多,而且超出了范围。
答案 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;