【问题标题】:laravel sql query if and if conditionlaravel sql查询if和if条件
【发布时间】:2020-10-24 09:03:06
【问题描述】:

如果 column1 等于 null,我希望我的 column2 在与月和日相关的两个日期之间,如果 column1 不为 null,我希望该列(column1)在与月和日相关的两个日期之间天,也是。所有列都是日期类型。

我会在 laravel 中通过 tableName->whereRaw(“SQL 查询”)使用这个 sql 查询,或者如果有人知道如何直接使用 laravel 命令。

我现在有这个,它可以单独使用,但不能一起使用。

SELECT * FROM tablename WHERE column1 IS NULL AND DATE_FORMAT(column2, '%m-%d') BETWEEN DATE_FORMAT('2005-01-01', '%m-%d') AND DATE_FORMAT('2020-12-30', '%m-%d') AND WHERE DATE_FORMAT(column1, '%m-%d') BETWEEN DATE_FORMAT('2005-01-01', '%m-%d') AND DATE_FORMAT('2020-12-30', '%m-%d')

【问题讨论】:

    标签: php mysql laravel conditional-statements


    【解决方案1】:

    你可以这样做:

    当 column1 不为 null 时 get all 而 column1 在 .... 否则当 column2 不为 null 时 get all 而 column2 在 ....

     $values=DB::table('table_name')->where(function (Builder $query){
                $query->whereNotNull('column1')->whereBetween('column1',[Carbon::parse('2005-01-01'),Carbon::parse('2020-12-30')]);
            })->orWhere(function (Builder $query){
                $query->whereNull('column1')->whereNotNull('column2')->whereBetween('column2',[Carbon::parse('2005-01-01'),Carbon::parse('2020-12-30')]);
            })->get();
    

    请不要在“介于”中使用日期时不必格式化日期

    【讨论】:

      猜你喜欢
      • 2016-11-06
      • 2016-02-07
      • 2014-03-23
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 2021-07-25
      相关资源
      最近更新 更多