我正在尝试运行一个查询,在该查询中,我找出一个人在两个日期之间的位置。以下是我到目前为止的情况:
$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命令,但我不知道如何解决这个问题。
我需要获取两个日期之间的列表,然后查看用户是否持有任何这些职位,或者获取用户拥有的所有职位,然后只包括两个日期之间的职位。有谁知道我怎么能做到这一点?目前,此查询返回用户持有的所有头寸,即使是日期之外的头寸。
答案 0 :(得分:1)
我从您的问题中了解到您需要像这样的查询
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();
希望这有帮助!
我等你的反馈