1

Laravel3.xを使用しています。

Post::with( array('blogs' => function($query) { $query->where('user_id', '=', Auth::user()->id); } ))->get();

どうすれば投稿にページを付けることができますか?

4

3 に答える 3

1

上記のフィードバックから、積極的な読み込みはあなたが探しているものではないようです。これを試して。

Post::where( 'user_id', '=', Auth::user()->id )->paginate( 10 );

または、投稿メソッドをユーザーモデルに追加することもできます。

public function posts()
{
    return $this->has_many( 'Post' );
}

次に、それを使用してユーザーの投稿を取得します。

Auth::user()->posts()->paginate( 10 );
于 2013-03-26T20:03:59.493 に答える
1

FakeHeal、

それを仮定すると$user->has_one('blog')、Laravelの魔法の関係ゲッターを使用することができます:

$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.*');
于 2013-03-26T21:05:51.687 に答える
1

これが私が思いついた解決策です。ユーザーは多くのブログを持つことができ、投稿は多くのブログに属することができます。

    /**
    * 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);
    }
于 2013-03-26T22:43:40.420 に答える