这是关于“图书馆”和“用户”,但它可以被视为更通用的案例。
Library
表关联的libraries
模型。 libraries
表格有一个creator_id
,它是对users
表格的引用。library_user
。所以我可以通过在User
模型中创建一个方法,通过数据透视表获取与用户关联的所有库:
public function librariesAssociatedViaPivot()
{
return $this->belongsToMany(Library::class);
}
我还可以创建一个函数来获取由User
创建的库:
public function librariesCreatedByUser()
{
return $this->hasMany(Library::class);
}
但我想要的是User
创建的库 + User
可以看到的库。换句话说,我想混合这两个函数,并能够通过调用User
来查看$users->libraries
的所有库。
public function libraries()
{
// ... ?
}
我应该在这个库方法中加入什么?
Sub
旁注:我不想在数据透视表中添加创建者。
答案 0 :(得分:0)
所以$user->librariesAssociatedViaPivot
和$user->librariesCreatedByUser
都返回Collection
个Library
个?你想两者结合?
在这种情况下,只需这样做:
public function libraries()
{
return $this->librariesAssociatedViaPivot->merge($this->librariesCreatedByUser);
}
并使用$user->libraries()
。