使用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()
如何获得每个地方的最后一次访问?
答案 0 :(得分:0)
使lastVisit
关系具有一个:
public function lastVisit()
{
return $this->hasOne(Timeline::class)->orderBy('end', 'desc');
}