首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Laravel 8中执行两个查询和合并时,如果使用sortBy或sortByDesc,则不会按过期日期进行排序

在Laravel 8中执行两个查询和合并时,如果使用sortBy或sortByDesc,则不会按过期日期进行排序
EN

Stack Overflow用户
提问于 2022-03-09 09:12:04
回答 3查看 64关注 0票数 1

我用with()对两个不同的表进行了2次查询,然后通过合并将它们连接起来。但我也希望它们按到期日期的顺序显示。

正如我所做的那样,orderBy并不适用于我。我做错什么了?我很感谢你的帮助。谢谢你,为我的英语道歉:

主计长:

代码语言:javascript
运行
复制
    public function listado_pendientes(Request $request)
  {
    $incio = Carbon::parse($request->fecha_inicio);
    $fin = Carbon::parse($request->fecha_fin);

    $datecheck =  $incio > $fin ? $fin : $incio;
    
    $dateStart = $datecheck && $datecheck < now() ? $datecheck : now();   
    $dateEnd = $fin && $fin < now() ? $fin : now();   

    // cargo relación de cobros con clientes según las fechas buscadas
    $cobros = Cobro::with('Contrato')
      ->whereBetween('vencimientos', [$dateStart,$dateEnd])     
      ->get();

    // cargo relación de facturas con clientes, según fechas buscadas y que no hayan sido cobradas
    $facturas = Factura::with('Contrato')
      ->whereBetween('vencimientos', [$dateStart,$dateEnd])
      ->where('cobrado', '=', NULL)      
      ->get();
    //dd($cobros);              
    $data = []; 
    $data = $cobros->merge($facturas);
    
    $data = collect($data)->sortByDesc('vencimientos');       

    return Voyager::view('voyager::custom.listado_pendientes', compact('data', 'dateStart','dateEnd'));
  }

刀片

代码语言:javascript
运行
复制
 <tbody>
                                @foreach ($data as $cobro)
                                    <tr>                                                        
                                        <td>{{ $cobro->Contrato ? $cobro->Contrato->cliente : '' }}</td>
                                        <td>{{ $cobro->Contrato ? $cobro->Contrato->codigo : ' '}}</td>
                                        <td>{{ $cobro->Contrato ? $cobro->Contrato->full_address : ''}}</td>
                                        <td>{{ \Carbon\Carbon::parse($cobro->vencimientos)->format('d-m-Y') }}</td>
                                        <td>{{ $cobro->factura ? 'Factura ' : 'Cobro ' }}</td>
                                        <td>{{ $cobro->factura ? $cobro->factura : $cobro->id }}</td>
                                        <td>{{ $cobro->total }}</td>
                                    </tr>
                                @endforeach
                            </tbody>

dd,看那片“毒蛇”

代码语言:javascript
运行
复制
 array:10 [▼
  6 => array:25 [▼
    "id" => 81185
    "idcliente" => 12421
    "factura" => 40621
    "fecha" => "2022-02-21"
    "baseimponible" => "23.00"
    "iva" => "4.83"
    "idiva" => 5
    "total" => "27.83"
    "vencimientos" => "2022-03-09"
    "domiciliaciones" => null
    "ccc" => null
    "observaciones" => null
    "autonomo" => null
    "razonsocial" => null
    "conceptos" => "POR SERVICIOS DE DESINSECTACION Y DESRATIZACION SEGÚN CONTRATO"
    "importes" => null
    "codigocliente" => null
    "formapago" => null
    "estado" => null
    "plazo" => "1"
    "tipopagos_id" => null
    "cobrado" => null
    "emailed" => null
    "remesada" => null
    "contrato" => array:76 [▶]
  ]
  9 => array:25 [▼
    "id" => 81199
    "idcliente" => 5459
    "factura" => 40635
    "fecha" => "2022-03-07"
    "baseimponible" => "148.00"
    "iva" => "31.08"
    "idiva" => 5
    "total" => "179.08"
    "vencimientos" => "2022-03-09"
    "domiciliaciones" => null
    "ccc" => null
    "observaciones" => null
    "autonomo" => null
    "razonsocial" => null
    "conceptos" => "POR SERVICIOS DE DESINSECTACION SEGÚN CONTRATO"
    "importes" => null
    "codigocliente" => null
    "formapago" => null
    "estado" => null
    "plazo" => null
    "tipopagos_id" => null
    "cobrado" => null
    "emailed" => null
    "remesada" => null
    "contrato" => array:76 [▶]
  ]
  5 => array:25 [▼
    "id" => 81184
    "idcliente" => 12421
    "factura" => 40620
    "fecha" => "2022-02-21"
    "baseimponible" => "54.00"
    "iva" => "11.34"
    "idiva" => 5
    "total" => "65.34"
    "vencimientos" => "2022-03-05"
    "domiciliaciones" => null
    "ccc" => null
    "observaciones" => null
    "autonomo" => null
    "razonsocial" => null
    "conceptos" => "POR SERVICIOS DE DESINSECTACION SEGÚN CONTRATO"
    "importes" => null
    "codigocliente" => null
    "formapago" => null
    "estado" => null
    "plazo" => "3"
    "tipopagos_id" => null
    "cobrado" => null
    "emailed" => null
    "remesada" => null
    "contrato" => array:76 [▶]
  ]
  7 => array:25 [▼
    "id" => 81191
    "idcliente" => 15869
    "factura" => 40627
    "fecha" => "2022-02-23"
    "baseimponible" => "89.86"
    "iva" => "23.89"
    "idiva" => 5
    "total" => "113.75"
    "vencimientos" => "2022-03-04"
    "domiciliaciones" => null
    "ccc" => null
    "observaciones" => null
    "autonomo" => null
    "razonsocial" => null
    "conceptos" => "POR NUESTRO SERVICIO DE CONTROL DE PLAGAS"
    "importes" => null
    "codigocliente" => null
    "formapago" => null
    "estado" => null
    "plazo" => "4"
    "tipopagos_id" => null
    "cobrado" => null
    "emailed" => null
    "remesada" => 1
    "contrato" => array:76 [▶]
  ]
  8 => array:25 [▼
    "id" => 81198
    "idcliente" => 5459
    "factura" => 40634
    "fecha" => "2022-03-04"
    "baseimponible" => null
    "iva" => "0.00"
    "idiva" => 5
    "total" => "0.00"
    "vencimientos" => "2022-02-17"
    "domiciliaciones" => null
    "ccc" => null
    "observaciones" => null
    "autonomo" => null
    "razonsocial" => null
    "conceptos" => "POR SERVICIOS DE DESINSECTACION SEGÚN CONTRATO"
    "importes" => null
    "codigocliente" => null
    "formapago" => null
    "estado" => null
    "plazo" => null
    "tipopagos_id" => null
    "cobrado" => null
    "emailed" => null
    "remesada" => null
    "contrato" => array:76 [▶]
  ]
  2 => array:25 [▼
    "id" => 63464
    "idcliente" => 4132
    "factura" => 27172
    "fecha" => "2016-02-22"
    "baseimponible" => "-282.65"
    "iva" => "-59.36"
    "idiva" => 5
    "total" => "-342.01"
    "vencimientos" => "2022-02-16"
    "domiciliaciones" => ""
    "ccc" => ""
    "observaciones" => ""
    "autonomo" => 1
    "razonsocial" => 1
    "conceptos" => ""
    "importes" => ""
    "codigocliente" => null
    "formapago" => "REBUT DOMICILIAT 15-8-15 CTA ES46.0075.0081.6106.01313202"
    "estado" => ""
    "plazo" => null
    "tipopagos_id" => null
    "cobrado" => null
    "emailed" => null
    "remesada" => null
    "contrato" => array:76 [▶]
  ]
  0 => array:11 [▼
    "id" => 254
    "idcliente" => 8383
    "vencimientos" => "2022-02-09"
    "conceptos" => "POR SERVICIOS DE DESINSECTACION SEGÚN CONTRATO"
    "plazo" => null
    "total" => "102.85"
    "observaciones" => null
    "idiva" => 5
    "iva" => "17.85"
    "baseimponible" => "85.00"
    "contrato" => array:76 [▶]
  ]
EN

回答 3

Stack Overflow用户

发布于 2022-03-09 10:21:10

您可以使用PHP Multi排序方法对DESC或ASC排序,它用于排序多个或多维数组:

代码语言:javascript
运行
复制
  $array_multisort(array_map('strtotime',array_column($array,'vencimientos')),SORT_DESC,$array);
票数 1
EN

Stack Overflow用户

发布于 2022-03-10 10:54:39

我发现了问题。我使用的是datatable,它为表排序,我已经修复了它,现在它可以使用一个简单的sortByDesc('vencimientos')。我保留已更改的datatable的代码。我添加‘bSort’=‘false 2’>假

代码语言:javascript
运行
复制
 array_merge(
                [   
                    'bSort' => false,                   
                    'paging' => false,
                    'language' => __('voyager::datatable'),                    
                    'columnDefs' => [['targets' => 'dt-not-orderable', 'searchable' => false, 'orderable' => false]],
                ],
票数 1
EN

Stack Overflow用户

发布于 2022-03-09 09:23:28

当您按键对集合进行排序时,它的结构如下:

代码语言:javascript
运行
复制
[
  "0": [COLLECTION],
  "1": [COLLECTION],
  "2": [COLLECTION],
  "3": [COLLECTION],
  ...
]

因此,当您返回此值时,它将按键排序。您必须获得该集合的values

因此,在您的示例中,您必须添加->values()方法:

代码语言:javascript
运行
复制
$data = collect($data)->sortByDesc('vencimientos')->values();       

或者如果它不起作用,试试这个:

代码语言:javascript
运行
复制
$data = collect($data)->sort(function ($a, $b) {
  return strtotime($a->vencimientos) < strtotime($b->vencimientos);
})
->values();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71406845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档