我使用的是Laravel 3.x。
Post::with(
array('blogs' => function($query) {
$query->where('user_id', '=', Auth::user()->id);
} ))->get();
如何对帖子进行分页?
从上面的反馈来看,似乎急于加载不是你想要的。试试这个。
Post::where( 'user_id', '=', Auth::user()->id )->paginate( 10 );
或者您可以在User模型中添加posts方法。
public function posts()
{
return $this->has_many( 'Post' );
}
然后使用它来获取用户的帖子。
Auth::user()->posts()->paginate( 10 );
FakeHeal,
假设$user->has_one('blog')
,你可以简单地使用Laravel魔法关系getter:
$user = Auth::user();
$user->blog->posts();
如果user->has_many('blog')
不是这种情况,则需要使用JOIN来检索所有用户博客上的所有帖子。
$user = Auth::user();
$posts = Posts::join('blogs', 'blogs.id', '=', 'posts.blog_id')
->where('blogs.user_id', '=', $user->id)
->get('posts.*');
这是我想到的解决方案。一个用户可以有多个博客,一篇文章可以属于多个博客。
/**
* Get all posts by a user for all blogs.
* @return paginated posts.
*/
public static function get_posts_for_user($user_id, $limit)
{
return Post::left_join('blog_post', 'posts.id', '=', 'blog_post.post_id')
->join('blogs', 'blogs.id', '=', 'blog_post.blog_id')
->where('blogs.user_id', '=', $user_id)
->paginate($limit);
}