Laravel:如何将两个项目中的标签合并为一个新项目

时间:2018-03-30 15:53:08

标签: laravel laravel-5.4

我正在写一个以“公司”为实体的小应用程序。这些公司可以被标记。

我有一个功能,允许我将两家公司合并为一家新公司。由于公司可以拥有许多标签,并且可以为许多公司分配一个标签,因此存在多对多关系。

创建/编辑公司时,我可以使用$company->tags()->snyc($tags)

保存/更新代码

但现在我也希望新公司拥有旧两家公司的所有标签。如何设法做到这一点?

问候卢卡

1 个答案:

答案 0 :(得分:0)

选择两家老公司拥有的标签:

$tags = Tags::whereExists(function ($q) use($companyId1, $companyId2) {
    $q->select(DB::raw(1))
        ->from('company_tags')
        ->whereIn('company_id', [$companyId1, $companyId2])
        ->whereRaw('company_tags.tag_id=tags.id');
})->get();

然后将这些标签同步到新公司:

$newCompany->sync($tags->pluck('id')->toArray());