Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个where和orwhere内部闭合laravel_Php_Laravel - Fatal编程技术网

Php 多个where和orwhere内部闭合laravel

Php 多个where和orwhere内部闭合laravel,php,laravel,Php,Laravel,您好,我正在尝试使用闭包,以便在查询中嵌套where子句。但我认为问题是,它不允许我构建两个以上的where子句,因为当我尝试使用或where继续构建时,它会给出一个错误您能帮我解决这个问题吗?为什么它会返回错误? $filtered_table = $filtered_table->orWhere(function ($filtered_table) use ($splitYearQuarter){ $filtered_table = $filtere

您好,我正在尝试使用闭包,以便在查询中嵌套where子句。但我认为问题是,它不允许我构建两个以上的where子句,因为当我尝试使用
或where
继续构建时,它会给出一个错误您能帮我解决这个问题吗?为什么它会返回错误?

  $filtered_table = $filtered_table->orWhere(function ($filtered_table) use ($splitYearQuarter){
                $filtered_table = $filtered_table->where('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '03' . '%')
                 ->orWhere('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '02' . '%')
                 ->orWhere('methods.crated_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '01' . '%');
              });
编辑1

我确信这些值应该存在于我的数据库中

编辑2 下面是当我注释掉两个
值正确返回时发生的情况

下面是我发布的常规查询的结果,它给出了一个错误

这就是我通过控制台输出查询的方式

$.ajax({
      url: '/filterdatacal',
      type: 'GET',
      data: {
        filters: filter_list,
      },
      success: function(filtered_table) {
        console.log(filtered_table);
        if(filtered_table == ""){
          console.log('empty but success');
        } else {
          //$("#datacal_table").empty();
          //console.log(filtered_table);
          for (var i=0; i < filtered_table.length; i++){
            for (var key in filtered_table[i]){
              if(key == 'method_created_at'){
                console.log(key + " -> " + moment(filtered_table[i][key]).format('MM/DD/YYYY hh:mm A'))
              } else {
              console.log(key + " -> " + filtered_table[i][key]);
            }
            }
          }
        }
      },
      error: function () {
        console.log('error');
      }
    });
$.ajax({
url:“/filterdatacal”,
键入:“GET”,
数据:{
过滤器:过滤器列表,
},
成功:函数(过滤的表格){
console.log(过滤的_表);
如果(筛选的_表==“”){
console.log('empty but success');
}否则{
//$(“#datacal_table”).empty();
//console.log(过滤的_表);
对于(变量i=0;i”+矩(filtered_table[i][key])。格式('MM/DD/YYYY hh:MM A'))
}否则{
console.log(key+“->”+过滤的_表[i][key]);
}
}
}
}
},
错误:函数(){
console.log('error');
}
});

老实说,我不知道它为什么会做出这种行为(可能是因为引擎盖下发生了一些我不熟悉的事情),但当我尝试这个查询时,它成功了

 $filtered_table = $filtered_table->orWhere(function ($filtered_table) use ($splitYearQuarter){
                $filtered_table = $filtered_table->where('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '03' . '%');
                $filtered_table = $filtered_table->orWhere('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '02' . '%');
                $filtered_table = $filtered_table->orWhere('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '01' . '%');
              });

我想你可以跳过这个任务

$filtered_table = $filtered_table->orWhere(function ($filtered_table) use ($splitYearQuarter){ 
    $filtered_table->where('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '03' . '%') 
    ->orWhere('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '02' . '%') 
    ->orWhere('methods.created_at', 'LIKE', '%' . $splitYearQuarter[0] . '-' . '01' . '%'); 
});

你能发布错误吗?我真的不知道错误消息,因为我正在通过ajax返回生成的查询。可能问题是当你使用
函数($filtered\u table)
然后
$filtered\u table=$filtered\u table
尝试更改
函数($query)时
$filtered\u table=$query
@user827391012检查控制台以查看错误message@nerea我不明白这就是你的意思吗
$filtered_table=$filtered_table->orWhere(函数($query)use($splitYearQuarter,
$filtered_table=$filtered_table->where('methods.created_at','LIKE','.%.$splitYearQuarter[0].-''03'''%');
我认为您可以跳过赋值“$filtered_table=$filtered_table=$filtered_table->orWhere”(函数($filtered_table)使用($splitYearQuarter){$filtered_table->where('methods.created_at','LIKE','%%.$splitYearQuarter[0].-''02'.%')->或where('methods.created_at','LIKE','splitYearQuarter[0].-'01'.%');)是的,谢谢你,你的建议通过了。我现在更喜欢你写的。如果你愿意把它作为你的答案,我很乐意选择它。发布为答案:)