laravel wherebetween与wherebetween

35g0bw71  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(425)

我写了一个laravel查询。我正在使用 whereBetween 以及 orWhereBetween 还有一个 where 名为“shareable”的列上的语句,该列应返回一行。
但是这个查询不需要 where 要考虑的条件。只花了 whereBetween 以及 orWhereBetween . 原因可能是什么。
我的问题

$childs = Program::whereIn('id', $programs_by_date)
                ->where('shareable', '=','1')
                ->wherebetween('starting_date', [$new_start_date,$new_end_date])
                ->orwherebetween('ending_date', [$new_start_date,$new_end_date])
                ->orderBy('starting_date')
                ->get();
``` `->where('shareable', '=','1')` 返回0行。原因可能是什么。 `shareable` 类型为枚举
h43kikqp

h43kikqp1#

你应该试试这个

$child = Program::whereIn('id', $programs_by_date)
                ->where('shareable', '=','1')
                ->whereRaw("( starting_date BETWEEN '".$new_start_date."' AND '".$new_end_date."' OR ending_date BETWEEN '".$new_start_date."' AND '".$new_end_date."' ")
                ->orderBy('starting_date')
                ->get();
hgqdbh6s

hgqdbh6s2#

试试这个:

$childs = Program::whereIn('id', $programs_by_date)
            ->where('shareable', '=','1')
            ->where(function($query) use ($new_start_date, $new_end_date){
                  $query->whereBetween('starting_date', [$new_start_date,$new_end_date])
                        ->orWhereBetween('ending_date', [$new_start_date,$new_end_date]) 
                })
            ->orderBy('starting_date')
            ->get();

希望这能奏效。

相关问题