orWhereBetween条件似乎无法正常工作

问题描述 投票:0回答:1

当我没有在我的过滤器查询中传递orWhereBetween条件但是当我传递 - > orWhereBetween查询结果没有任何意义时,一切正常。

希望有人可以帮助我,并且可以看到我的orWhereBetween中的问题在哪里,非常感谢提前。

$ query = Fine :: query();

        $filters = [
            'structure_id' => 'structure_id',
            'equipe_id' => 'equipe_id',
            'bareme_amende_id' => 'bareme_amende_id',
            'saison_id' => 'saison_id' ,
            'dt_min' => 'dt_amende' ,
            'dt_max' => 'dt_amende',
            'etat_paiement' => 'etat_paiement',
            'bl_comptabilite' => 'bl_comptabilite',


        ];


        $dt_min = $request->input('dt_min');
        $dt_min =  Carbon::parse($dt_min)->format('Y-m-d');
        $dt_max = $request->input('dt_max');
        $dt_max = Carbon::parse($dt_max)->format('Y-m-d');

        foreach ($filters as $key => $column) {
        $query->when($request->has($key), function ($query, $value) use ($column,$key, $request , $dt_min , $dt_max) {
            $query->where($column, $request->$key)
            ->orWhere(function ($query) use ($dt_min , $dt_max){
            $query->whereBetween('dt_amende' , [$dt_min , $dt_max]);
            });
        });
    }

        $amendes = $query->paginate(10);
laravel
1个回答
1
投票

试试这个......

$dt = array($dt_min , $dt_max);
->orWhere(function ($query) use ($dt){
$query->whereBetween('dt_amende' , [$dt[0] , $dt[1]]);
});
© www.soinside.com 2019 - 2024. All rights reserved.