Laravel Eloquent - 相当于第一个()?

时间:2014-08-17 19:06:05

标签: php laravel eloquent

我有一些模型,如用户,帖子,评论等。

在用户中,我有:

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

我可以通过$customer->posts()->first()获得第一篇帖子,但如果我想获得最新的帖子怎么办?我看不到最后一个()。

hasManyThrough关系更加复杂(遗憾的是我们继承了一个古怪的架构):

public function comments() 
{
     return $this->hasManyThrough('Comment', 'Post');
}

如果我尝试执行$this->comments()->orderBy('comments.id', 'desc')->first();它会返回一个User对象??

2 个答案:

答案 0 :(得分:6)

不,这个

// User model
$this->comments()->orderBy('comments.id', 'desc')->first();

不会返回User模型。

为了得到你所要求的,只需这样做:

$customer->posts()->latest()->first();

答案 1 :(得分:2)

您说There is no last() as I can see,但实际上还有一个last()方法,因此您可以像以下一样使用它:

$customer->posts->last();

请注意,它不是$customer->posts()->last(),就像您在使用first()的示例中所使用的那样。