【发布时间】:2018-07-22 21:25:12
【问题描述】:
我想通过单个查询使用连接在不同表中的表中插入多行。当我运行以下查询时,它显示错误
$insert=DB::table('tableA')->insert(DB::raw('SELECT ss.col1,ts.col2,ts.col3,ts.col4,ts.col5,
5 AS col6 FROM
tableB AS ts
INNER JOIN tableC AS t ON ts.col2=t.id
INNER JOIN tableD AS ss
ON ts.col1=ss.col1
AND ts.col3=ss.col3
AND ts.col4=ss.col4
AND ts.col5=ss.col5
INNER JOIN tableE AS s
ON ss.col1=s.id
WHERE t.status=1
AND s.status=1'));
错误:参数 1 传递给 Illuminate\Database\Query\Builder::insert() 必须是数组类型,给定对象。
实际上它返回对象,其中插入方法需要数组。我使用了原始查询,它插入了数据,但没有填充时间戳,也没有返回插入的行数。
如何使用 laravel 查询生成器同时获得两者??
【问题讨论】:
-
我认为的问题是您正在尝试插入从连接生成的值,因此问题..您需要确保您尝试添加的列应与表中定义的列匹配跨度>
-
@DhavalChheda 它匹配 columns.insert 方法需要数组,但从连接返回数组对象生成的值。
标签: php laravel-5.4 laravel-query-builder