所以我设法使用laravel model::insert(array(...));
示例数据
array (
0 =>
array (
'organization' => '1',
'status' => false,
'project' => '1',
'act_date' => '2016-11-23 08:19:06',
),
1 =>
array (
'organization' => '1',
'status' => false,
'project' => '1',
'act_date' => '2016-11-23 08:19:06',
),
)
我想要的是获取插入数组的数据或id 至少。此数据还必须包含与插入的数据对应的多个ID(array({ data[0].id=>1 }, { data[1].id=>2 })
)。
model::insert(array(...));
的问题是,成功时会返回true
,否则会返回false
。
model::create(array(...));
返回插入行的数据,但不支持多行插入。
答案 0 :(得分:1)
如果您想获取每个插入行的ID,我建议您使用create()
方法。
但如果你真的想使用insert()
,你可以试试这个(方法有它自己的缺点,但我不会用它):
model::insert($array);
$lastIds = model::orderBy('id', 'desc')->take(count($array))->pluck('id');
答案 1 :(得分:0)
我认为这种方法对你有帮助
$data = array(
array (
'organization' => '1',
'status' => false,
'project' => '1',
'act_date' => '2016-11-23 08:19:06',
),
array (
'organization' => '1',
'status' => false,
'project' => '1',
'act_date' => '2016-11-23 08:19:06',
),
///////
);
Model::insert($data);
DB::table('table')->insert($data);
答案 2 :(得分:0)
re:@Alexey Mezenin担心在高负载系统上返回错误的行。
对我来说有用的是生成随机字符串,或者你可以使用当前时间戳,并将其添加到我正在插入的每一行,我称之为“insert_key”,然后在批量插入完成后,我查询拥有“insert_key”的所有记录的数据库,现在我已经拥有了所有新插入的ID
答案 3 :(得分:0)
另一种方式:
$savedIds = [];
foreach($data as $record) {
$savedIds[] = Model::insertGetId($record);
}
$savedRecords = Model::whereIn('id', $savedIds)->get();