【发布时间】:2020-04-09 23:04:36
【问题描述】:
下面是需要 Laravel 查询的 SQL 查询。
INSERT INTO 'details' (id, contact)
SELECT DISTINCT tmp_details.id, students.contact
FROM 'tmp_details'
INNER JOIN 'students' USING(name)
ON CONFLICT DO NOTHING;
我无法应用ON CONFLICT 条件。
我已将其部分转换如下。
$strSQL = DB::table('tmp_details')
->join('students', 'tmp_details.name', '=', 'students.name')
->select('tmp_details.id','students.contact');
DB::table('details')->insertUsing(['id', 'contact'], $strSql);
【问题讨论】:
-
不确定但试试
insertOrIgnore。 -
我尝试使用 insertOrIgnore,但出现如下错误: SQLSTATE[42703]: Undefined column: 7 ERROR: column "0" of relationship "details" does not exist LINE 1: insert into "details " ("0", "1") 冲突时的值 ($1, $2)... ^ (SQL: insert into "details" ("0", "1") 冲突时的值 (id, contact) 什么都不做)
-
显示您的查询。
-
DB::table('details')->insertOrIgnore(['id', 'contact'], $strSql); //relapced only insertUsing 我无法插入记录,可能是参数必须是一个数组并且值不应该在变量中给出。
-
我会研究现成的解决方案:github.com/staudenmeir/laravel-upsert