【发布时间】:2017-11-28 16:34:14
【问题描述】:
我正在尝试使用 user 和 calendars 检索 Player - 播放器 hasOne 用户和播放器 hasMany 日历。
但我只需要男性用户 - 工作正常,然后我必须检查日历冲突 - 只选择没有日历冲突的玩家,查询:
$freeplayers = Player::whereNotIn('id', $playersev)
->with('user','calendars')
->whereHas('user', function ($query) {
$query->where('gender', 'male');
})
->whereHas('calendars', function ($query) use ($event) {
$query->whereNotIn('fulldate', $event->fulldate);
})
->get();
第二个whereHas 不起作用,因为:
- 并非每个玩家都有日历中的事件(所以我无法访问
fulldateattr) - 播放器
hasMany日历,所以它作为另一个集合返回,我必须在这个日历集合的每个项目中运行->whereNotIn(......
所以,我需要日历为空的男性玩家(他们可用)和现有日历中没有冲突的玩家。
我怎样才能做到这一点?我尝试合并 ->doesntHave('calendars')->orWhereHas('cale... 但它不起作用,因为如果用户有日历,它会作为另一个集合返回...
谢谢
【问题讨论】:
-
你能显示 fullDate 是什么吗?
-
@NiRR - 只是普通的日期时间,例如
2017-11-10 16:00:00
标签: php laravel laravel-5 laravel-5.5