场景我们说有一个系统,公司可以将其他公司添加到他们的收藏列表中。要获取此记录,我会执行以下操作:
// Returns a list of favorite companies for the current user's company
$user->company()->favorites;
请注意,favorites
表示hasManyThrough关系。
public function favorites()
{
return $this->hasManyThrough(Company::class, CompanyFavorite::class, 'company_id_owner', 'id', 'id', 'company_id_selected');
}
IDEAL SOLUTION我正在寻找一个解决方案,我可以使用hasManyThrough
对象从中间关系表中删除记录。例:
$user->company()->favorites()->detach([...companies_ids]);
HasManyThrough
不是正确的关系,请使用BelongsToMany
代替:
public function favorites()
{
return $this->belongsToMany(
Company::class, 'company_favorites', 'company_id_owner', 'company_id_selected'
);
}
这种关系provides所有必要的方法,如attach()
和detach()
:
$user->company()->favorites()->detach([...companies_ids]);