Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 4处理质量分配并获得最后一次插入?_Laravel_Query Builder - Fatal编程技术网

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);
有关多对多关系以及插入或更新轴心值的更多信息,请参阅本文: