在Book模型中,我有两种方法
1个用于获取图书列表,另一个用于获取授权用户收藏夹图书列表。两种方法如下
获取图书列表:
public function getBooks($id = null)
{
$query = $this::with("bookImages","author","category")->withCount(['favourites'])->orderBy('created_at', 'desc');
return $id ? $query->findOrFail($id):$query;
}
用于获取用户收藏的图书列表
public function getFavList()
{
return $this::join('favorites', function($query){
$query->on('books.id','=','favorites.book_id')->where('favorites.user_id', '=', 1);
})
->with("bookImages","author","category")->withCount(['favourites'])->orderBy('created_at', 'desc')
;
}
在这两个查询中,with
是常见的。因此,我尝试在getFavList方法中重用getBooks方法,如下所示
public function getFavList()
{
return $this::join('favorites', function($query){
$query->on('books.id','=','favorites.book_id')->where('favorites.user_id', '=', 1);
})
::$this->getBooks()
;
}
这里我得到了Access to undeclared static property Illuminate\Database\Eloquent\Builder::$this
。我如何简化这个方法?
2条答案
按热度按时间wgxvkvu91#
它在官方文档中的“Eager Loading”下多重关系:
嵌套关系:
所以对你来说:
另一种方法-您甚至可以尝试联合方法:
4c8rllxm2#
简单的方法是:P