假设我有 Posts
以及 Comments
定义为:
邮政.php
public function comments()
{
return $this->hasMany('App\Comment');
}
注解.php
public function post()
{
return $this->belongsTo('App\Post');
}
我想有效地装载邮件 number of comments
以及 updated_at
上次更新的注解的列。我该怎么办?
我能想到的最好办法是加载带有所有注解的post,但将select on注解限制为 post_id
,和 updated_at
柱。然后在视图中对加载的注解进行计数以获得计数并使用 sortByDesc('updated_at')->first()
要获取最后一列的日期:
mycontroller.php
Post::with([
'comments' => function($q) {
$q->select('post_id','updated_at');
}
])->get();
我的\视图.blade.php
Comments count: {{ $posts->comments->count() }}
Last comment: {{ $posts->comments->sortByDesc('updated_at')->first()->updated_at }}
有没有一种方法可以更有效地做到这一点,只得到评论和最新的价值计数 comments.updated_at
列?
mysql或雄辩的解决方案是可以的。
谢谢!
1条答案
按热度按时间4ioopgfo1#
你可以通过
withCount()
: