分离一对多的关系

时间:2015-08-31 15:16:12

标签: php laravel laravel-4 orm eloquent

我有一个模型TopicPost

每个Topic都有许多Post

我的Topic模型扩展了Eloquent与Post的一对多关系。

class Topic extends Eloquent
{

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

}

我的Post模型也扩展了Eloquent。

class Post extends Eloquent
{

    public function topic()
    {
        return $this->belongsTo('Post');
    }

}

在我的TopicController中,我想通过关系对我的帖子进行分页。我花了这样的东西会起作用:

$topic->posts->paginate(20);

但是,它是一个Collection对象。因此,我收到以下错误消息。

  

调用未定义的方法   照亮\数据库\锋\收藏:: PAGINATE()

如何正确分页一对多关系?

1 个答案:

答案 0 :(得分:2)

此处的问题是$topic->posts$topic->posts()不同。而前者是Illuminate\Database\Eloquent\Collection对象。后者是Illuminate\Database\Eloquent\Relations\HasMany对象。

因此,以下方法可行。

$topic->posts()->paginate(20);