从多个相关记录中获取一组相关记录laravel?
Get a set of related records from multiple related records laravel?
我有 users
有多个 restaurants
,然后每个 restaurant
有 comments
。
所以当 user
登录时,我想显示 restaurants
中与该用户相关的所有 comments
的列表。
我正在使用laravel 5.1
我目前拥有的是:
$restaurants = $user->restaurants;
$comments = null;
foreach ($restaurants as $restaurant) {
if (!$comments){
$comments = $restaurants->comments();
} else{
$comments = $comments->merge($restaurant->comments());
}
}
$rows = $comments->paginate(15);
$count = $comments->count();
我收到 BadMethodCallException
,我想我没有按照 laravel 的方式来做。
我刚找到答案,要使用 merge
数据集需要 collection
。
所以要创建您需要使用的集合:->get();
在我的例子中:
$comments = $restaurants->comments()->get();
注意:分页功能必须去,它不是 laravel Collection
的方法
你试过有很多通过吗?
在用户模型中
public function user_posts()
{
return $this->hasManyThrough('App\Comment', 'App\Restaurant');
}
并且在控制器中你可以轻松访问评论
$comments = $user->user_posts();
此处有更多详细信息:https://laravel.com/docs/5.1/eloquent-relationships#has-many-through
你几乎是正确的,你应该做的
$restaurant->comments
// gives you objects
而不是
$restaurant->comments()
// gives you query builder
// $restaurants->comments()->get() would also work as someone mentioned
至于分页你可以做
$restaurants->comments()->paginate(15)
而不是
$restaurants->comments()->get()
我有 users
有多个 restaurants
,然后每个 restaurant
有 comments
。
所以当 user
登录时,我想显示 restaurants
中与该用户相关的所有 comments
的列表。
我正在使用laravel 5.1
我目前拥有的是:
$restaurants = $user->restaurants;
$comments = null;
foreach ($restaurants as $restaurant) {
if (!$comments){
$comments = $restaurants->comments();
} else{
$comments = $comments->merge($restaurant->comments());
}
}
$rows = $comments->paginate(15);
$count = $comments->count();
我收到 BadMethodCallException
,我想我没有按照 laravel 的方式来做。
我刚找到答案,要使用 merge
数据集需要 collection
。
所以要创建您需要使用的集合:->get();
在我的例子中:
$comments = $restaurants->comments()->get();
注意:分页功能必须去,它不是 laravel Collection
你试过有很多通过吗?
在用户模型中
public function user_posts()
{
return $this->hasManyThrough('App\Comment', 'App\Restaurant');
}
并且在控制器中你可以轻松访问评论
$comments = $user->user_posts();
此处有更多详细信息:https://laravel.com/docs/5.1/eloquent-relationships#has-many-through
你几乎是正确的,你应该做的
$restaurant->comments
// gives you objects
而不是
$restaurant->comments()
// gives you query builder
// $restaurants->comments()->get() would also work as someone mentioned
至于分页你可以做
$restaurants->comments()->paginate(15)
而不是
$restaurants->comments()->get()