Извините за мой английский. У меня есть отношение один ко многим между двумя таблицами, одна из которых "alquileres" (арендная плата), а другая - "cobros" (платежи). Мне нужно показать итоги каждой аренды следующим образом:
что мне нужно
Но получите это:
результат
Это код моего экспорта:
class ComprobantesExport implements FromCollection, WithMapping, WithHeadings, ShouldAutoSize, WithEvents
{
use Exportable, RegistersEventListeners;
protected $alquileres;
public function __construct($alquileres = null)
{
$this->alquileres = $alquileres;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
return $this->alquileres;
}
public function headings(): array
{
return [
'#',
'Fecha',
'Inquilino',
'Propiedad',
'Subpropiedad',
'Atraso',
'Monto'
];
}
public function map($alquiler): array
{
return $alquiler->cobros->map(function ($cobro, $nro) use ($alquiler){
return [
$cobro->comprobante->id,
$cobro->created_at->format("d/m/Y"),
$alquiler->inquilino->full_name,
$alquiler->propiedad->titulo,
$alquiler->subpropiedad->titulo,
'si',
$alquiler->moneda->simbolo . $cobro->comprobante->monto,
];
})->toArray();
}
/**
* @return array
*/
public function registerEvents(): array
{
return [
BeforeExport::class => function(BeforeExport $event) {
$event->writer->getProperties()->setCreator('Sistema de alquileres');
},
];
}
}
Мой контроллер:
public function comprobantes()
{
$alquileres = Alquiler::with('moneda', 'inquilino', 'propiedad', 'subpropiedad', 'cobros')
->get();
return(new ComprobantesExport($alquileres))->download('comprobantes.xlsx');
}
Спасибо.