我用with()对两个不同的表进行了2次查询,然后通过合并将它们连接起来。但我也希望它们按到期日期的顺序显示。
正如我所做的那样,orderBy并不适用于我。我做错什么了?我很感谢你的帮助。谢谢你,为我的英语道歉:
主计长:
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'));
}
刀片
<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,看那片“毒蛇”
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 [▶]
]
发布于 2022-03-09 10:21:10
您可以使用PHP Multi排序方法对DESC或ASC排序,它用于排序多个或多维数组:
$array_multisort(array_map('strtotime',array_column($array,'vencimientos')),SORT_DESC,$array);
发布于 2022-03-10 10:54:39
我发现了问题。我使用的是datatable,它为表排序,我已经修复了它,现在它可以使用一个简单的sortByDesc('vencimientos')。我保留已更改的datatable的代码。我添加‘bSort’=‘false 2’>假
array_merge(
[
'bSort' => false,
'paging' => false,
'language' => __('voyager::datatable'),
'columnDefs' => [['targets' => 'dt-not-orderable', 'searchable' => false, 'orderable' => false]],
],
发布于 2022-03-09 09:23:28
当您按键对集合进行排序时,它的结构如下:
[
"0": [COLLECTION],
"1": [COLLECTION],
"2": [COLLECTION],
"3": [COLLECTION],
...
]
因此,当您返回此值时,它将按键排序。您必须获得该集合的values
。
因此,在您的示例中,您必须添加->values()
方法:
$data = collect($data)->sortByDesc('vencimientos')->values();
或者如果它不起作用,试试这个:
$data = collect($data)->sort(function ($a, $b) {
return strtotime($a->vencimientos) < strtotime($b->vencimientos);
})
->values();
https://stackoverflow.com/questions/71406845
复制相似问题