Laravel轻松地分离HasManyThrough关系

问题描述 投票:1回答:1

场景我们说有一个系统,公司可以将其他公司添加到他们的收藏列表中。要获取此记录,我会执行以下操作:

// 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]);
laravel eloquent laravel-5.7
1个回答
0
投票

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]);
© www.soinside.com 2019 - 2024. All rights reserved.