在 laravel 中查询与 carbon 的数据库关系

Querying a database relationship with carbon in laravel

我正在尝试 select 前一天某个类别中点赞最多的图片。但是,我的查询 returns 为空结果。我的图片通过多态关系与点赞相关。

这是我的查询:

$foodOfTheDay = Picture::withCount('likes')
        ->where('picture_type', 'food')
        ->whereHas('likes', function($query) {
            $query->whereDate('created_at', Carbon::yesterday());
        })
        ->orderBy('likes_count', 'desc')
        ->with('user')
        ->first();

这是我可爱的关系:

public function likes()
{
    return $this->morphMany('App\Like', 'likeable');
}

感谢您的帮助。

试试这个:

$foodOfTheDay = Picture::withCount('likes')
        ->where('picture_type', 'food')
        ->whereHas('likes', function($query) {
            $query->whereBetween('created_at', [Carbon\Carbon::yesterday()->startOfDay(), Carbon\Carbon::yesterday()->endOfDay()]);
        })
        ->withCount('likes') // count yesterday's likes
        ->orderBy('likes_count', 'desc')
        ->with('user')
        ->first();

或者这个:

$foodOfTheDay = Picture::withCount('likes')
        ->where('picture_type', 'food')
        ->whereHas('likes', function($query) {
            $query->where('created_at', '>=', Carbon::yeserday()->startOfDay())
                  ->where('created_at', '<=', Carbon::yesterday()->endOfDay());
        })
        ->withCount('likes') // count yesterday's likes
        ->orderBy('likes_count', 'desc')
        ->with('user')
        ->first();

两人应该return前一天(昨天)点赞最高的照片

此查询选择点赞最多的图片,不考虑其他天的点赞:

$foodOfTheDay = Picture::where('picture_type', 'food')->withCount(['likes' => function($query) {
        $query->whereBetween('created_at', [Carbon::yesterday()- 
>startOfDay(), Carbon::yesterday()->endOfDay()]);
    }])
    ->orderBy('likes_count', 'asc')
    ->with('user')
    ->first();