laravel - 在 laravel 中查询与 carbon 的数据库关系
问题描述
我正在尝试从前一天的类别中选择最喜欢的图片。但是,我的查询返回空结果。我的图片通过具有许多多态关系与喜欢相关。
这是我的查询:
$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();
两人都应该返回前一天(昨天)点赞最高的图片
此查询选择喜欢最多的图片,而不考虑其他天的喜欢:
$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();
推荐阅读
- navbar - 无论 blazor 中的窗口大小如何,如何使导航栏切换始终可见
- php - CodeIgniter 如何进行多用户登录
- python - AttributeError:“OWM”对象没有属性“weather_at_coords”
- php - 从 php 函数调用存储过程
- excel - 在 excel 中,如何根据另一列中的条件返回一列中唯一值的数量
- r - 创建包含 dplyr 和 ggplot 的 R 函数
- spring - Eureka 服务不读取 bootstrap.yml 文件
- r - r 宽到长的错误输出行必须由唯一的键组合标识
- git - Github:为什么新的变化出现在文件上而不出现在网站上?
- ruby-on-rails - 观察 Rails ActionText 的变化