繁体   English   中英

Laravel Eloquent Check多个orWhere语句,然后在两个日期之间排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM