获取“帖子”字段,并获取每个帖子:最后评论的详细信息

时间:2019-12-27 18:46:12

标签: laravel

使用Laravel(v6),希望收集带有 last 评论的匹配帖子。
或者,根据我的情况:匹配地点,并提供上次访问的详细信息。

class Place extends Model
{
    public function visits(){
        return $this->hasMany(Timeline::class);
    }

    public function lastVisit(){
        return $this->visits()->orderBy('end', 'desc')->limit(1);
    }
...

这对于单个地方很好:

Place::where('id',2)->withCount('visits')->with('lastVisit')->get()

但对于多个地方,它仅显示最后个地方的lastVisit:

Place::where('name','like','%hotel%')->withCount('visits')->with('lastVisit')->get()

我也尝试过:

Place::where('name','like','%hotel%')
->withCount('visits')
->with(['visits' => function($e) {return $e->orderBy('end','desc')->first(); }])
->get()

这仅显示最后一个地方的最后一次访问,因此:总共仅一次访问。

当我离开->first()时,每个地方确实包含所有访问该地方(按上次访问次数排序)

Place::where('name','like','%hotel%')
->withCount('visits')
->with(['visits' => function($e) {return $e->orderBy('end','desc'); }])
->get()

如何获得每个地方的最后一次访问?

1 个答案:

答案 0 :(得分:0)

使lastVisit关系具有一个:

public function lastVisit()
{
    return $this->hasOne(Timeline::class)->orderBy('end', 'desc');
}