laravel - 如何在满足计数条件的情况下查询具有多对多关系的表
问题描述
有3种型号:
- 组(用函数 Broadcasts() 定义 hasMany 广播)
- 广播(用函数 Groups() 定义 hasMany 到 Group)
- GroupBroadcast(用函数 Broadcast() 和 Group() 定义父母)
目标是找到在 24 小时内发送不超过 5 个广播的组。
就像是:
Group::whereDoesntHave("Broadcasts", function($q) {
$q->where("Count sent broadcasts in 24", "<=", 5);
})->get();
这怎么可能?
解决方案
您可以使用 Eloquent 的 whereHas 方法,它接收关系、回调、运算符和计数。
尝试这个:
$groups = Group::whereHas('broadcasts', function ($query) {
$query->whereBetween('created_at', [now()->subDay(), today()]);
}, '<=', 5)->get();
推荐阅读
- python - 使用卡尔曼滤波器检测碰撞
- android - 导航中禁用了添加操作(android Studio 3.3)?
- windows - 如何设置 IntelliJ 以记住会话之间的 Git Bash 当前工作目录?
- sql-server - 如何使用自动增量参数将选择插入到表中?
- ruby - 使用'array.each { |x| puts x }' 绘制由多个“-”组成的条形图,抛出 TypeError
- selenium - 给定 xpath 表达式 "//div[contains(@class='loader-overlay')]" 对 Selenium 无效
- zabbix - Zabbix 在哪里存储仪表板的收藏对象(地图、屏幕和图形)?
- javascript - 将 Jquery 对象从 .cshtml 放入 C# 代码中
- sql - SQL Server 行级安全性不适用于外键
- wordpress - 在 wordpress 中创建一个用户播放列表,如 spotify