Laravel 4处理质量分配并获得每个lastInsertedId?

时间:2014-09-12 01:37:58

标签: 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::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();
    }    

3 个答案:

答案 0 :(得分:0)

  • 要获取每个最后插入的ID,只需将插入结果分配给变量:例如$ transaction = DB :: table(...) - > insert。希望你能得到$ transaction-> id。
  • 我还没有在laravel中提出关于质量分配的方法。也许您应该尝试使用数据库脚本简单地插入数据。至少那是我的方式。

答案 1 :(得分:0)

不是一次插入整个数组,而是一次接触1个并将流畅的对象保存到局部变量。

然后在保存透视数据时使用结果对象id。

答案 2 :(得分:0)

同意Abba Bryant,当时保存一个联系人,并继续与联系对象一起工作。

然后你可以这样做:

$contact->group()->attach($this->group);

有关多对多关系以及插入或更新数据透视值的更多信息,请参阅以下文章:http://vegibit.com/many-to-many-relationships-in-laravel/