[英]Laravel Eloquent Check multiple orWhere statements then sort between two dates
我试图运行一个查询,以找出一个人在两个日期之间所处的位置。 这是我到目前为止的内容:
$startDate = Carbon::parse($start)->toDateString();
$endDate = Carbon::parse($end)->toDateString();
$user = Auth::id();
$Positions = Position::whereBetween('shootDate', array($startDate, $endDate))->where('photographer_id', $user)->orWhere('photoEditor_id', $user)->orWhere('videographer_id', $user)
->orWhere('videoEditor_id', $user)->orWhere('scheduler_id', $user)->orWhere('drone_id', $user)->orWhere('webpage_id', $user)
->orWhere('flyer_id', $user)->orWhere('zillow_id', $user)->get();
我知道这是行不通的,因为orWhere语句基本上会覆盖whereBetween命令,但我不知道该如何解决。
我需要获取两个日期之间的列表,然后查看用户是否持有这些职位中的任何一个,或者获取用户拥有的所有职位,然后仅包括两个日期之间的职位。 有人知道我该怎么做吗? 当前,此查询返回用户持有的所有职位,甚至包括日期以外的职位。
我从您的问题中了解到您需要这样的查询
SELECT *
FROM position
WHERE (
photographer_id = $user OR
photoEditor_id = $user OR
videographer_id = $user OR
videoEditor_id = $user OR
scheduler_id = $user OR
drone_id = $user OR
webpage_id = $user OR
flyer_id = $user OR
zillow_id = $user
) AND
shootDate BETWEEN $startDate AND $endDate
我用其他表做了一些测试,您可以尝试这样
$Positions = Position::where(function($query){
$query->where('photographer_id', $user);
$query->orWhere('photoEditor_id', $user);
$query->orWhere('videographer_id', $user);
$query->orWhere('videoEditor_id', $user);
$query->orWhere('scheduler_id', $user);
$query->orWhere('drone_id', $user);
$query->orWhere('webpage_id', $user);
$query->orWhere('flyer_id', $user);
$query->orWhere('zillow_id', $user);
})
->whereBetween('shootDate', array($startDate, $endDate))
->get();
希望这会有所帮助!
我会等你的反馈
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.