Laravel 4处理质量分配并获得最后一次插入?
我正在尝试插入一个联系人数组,然后我需要在数据透视表中插入每个联系人。。。有什么聪明的方法可以解决这个问题吗Laravel 4处理质量分配并获得最后一次插入?,laravel,query-builder,Laravel,Query Builder,我正在尝试插入一个联系人数组,然后我需要在数据透视表中插入每个联系人。。。有什么聪明的方法可以解决这个问题吗 DB::beginTransaction(); try { (DB::table('contacts')->insert($this->contacts()) ); //I need also to insert every contact on my group_contacts pivot table...
DB::beginTransaction();
try {
(DB::table('contacts')->insert($this->contacts()) );
//I need also to insert every contact on my group_contacts pivot table...
DB::table('group_contacts')->insert([
"company_id" => $this->company,
"group_id" => $this->group,
"contact_id" => DB::getPdo()->lastInsertId()
]);
DB::commit();
} catch(Exception $e) {
//TODO: Listener for $e on saving.
DB::rollback();
}
要获取最后插入的每个id,只需将插入结果分配给一个变量:例如$transaction=DB::table…->insert。希望您能在您的案例中获得$transaction->id。
我还没有想出在拉威尔进行大规模分配的方法。也许您应该尝试使用数据库脚本简单地插入数据。至少这是我的方式。
不要一次插入整个数组,而是一次插入一个联系人,并将fluent对象保存到局部变量
然后在保存pivot数据时使用生成的对象id。同意Abba Bryant的意见,每次保存一个联系人,并进一步处理联系人对象 然后你可以这样做:
$contact->group()->attach($this->group);
有关多对多关系以及插入或更新轴心值的更多信息,请参阅本文: