我正在写一个以“公司”为实体的小应用程序。这些公司可以被标记。
我有一个功能,允许我将两家公司合并为一家新公司。由于公司可以拥有许多标签,并且可以为许多公司分配一个标签,因此存在多对多关系。
创建/编辑公司时,我可以使用$company->tags()->snyc($tags)
但现在我也希望新公司拥有旧两家公司的所有标签。如何设法做到这一点?
问候卢卡
答案 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());