laravel wherebetween与wherebetween

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

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

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

h43kikqp1#

你应该试试这个

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

hgqdbh6s2#

试试这个:

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

希望这能奏效。

相关问题