Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Laravel] Aiuto con formattazione query in blade

    ciao!

    da una query mi arrivano questi dati (sono dati di prova):
    codice:
    +--------------------------------+------------------+--------+-----------+---+--------+----------+---+-----+------+
    |fornitore                       |descrizione       |articolo|colore     |tg |stagione|data      |qta|lordo|netto |
    +--------------------------------+------------------+--------+-----------+---+--------+----------+---+-----+------+
    |DR MARTENS                      |Abito donna 111   |600001  |Acquamarina|I  |AI-2021 |2022-03-28|1  |203  |162.4 |
    |DR MARTENS                      |Abito donna 111   |600002  |Acquamarina|II |AI-2021 |2022-03-28|2  |406  |406   |
    |DR MARTENS                      |Abito donna 111   |600003  |Acquamarina|III|AI-2021 |2022-03-28|1  |203  |176.61|
    |DR MARTENS                      |Abito Donna S. 555|600005  |Argento    |S/M|AI-2021 |2022-03-30|1  |12   |12    |
    |DR MARTENS                      |Abito Donna S. 555|600005  |Argento    |S/M|AI-2021 |2022-04-21|2  |24   |22.2  |
    |DR MARTENS                      |Abito Donna S. 555|600006  |Argento    |M/L|AI-2021 |2022-04-21|1  |12   |10.8  |
    |DR MARTENS                      |Abito Donna S. 555|600017  |Antracite  |UNI|AI-2021 |2022-04-22|1  |12   |12    |
    |DR MARTENS                      |Abito Donna S. 555|600018  |Arancio    |UNI|AI-2021 |2022-04-22|2  |24   |24    |
    |MAGLIFICIO  BRUNO'S             |Accappatoio 111   |600000  |Panna      |UNI|AI-2021 |2022-03-28|2  |250  |250   |
    |MAGLIFICIO  BRUNO'S             |Accappatoio 111   |600000  |Panna      |UNI|AI-2021 |2022-03-30|2  |250  |250   |
    |RESELL APPAREL  (4Real s.r.l.s.)|Pant donna 7006019|600011  |Azzurro    |40 |PE-22   |2022-04-21|1  |69   |69    |
    |RESELL APPAREL  (4Real s.r.l.s.)|Pant donna 7006019|600012  |Azzurro    |42 |PE-22   |2022-04-21|1  |69   |69    |
    +--------------------------------+------------------+--------+-----------+---+--------+----------+---+-----+------+
    in un template di laravel dovrei visualizzarli in modo tipo questo:
    codice:
    FORNITORE: DR MARTENS
    
    <table>
       RIGHE CON DATI DEL FORNITORE DR MARTENS
    </table>
    
    FORNITORE: MAGLIFICIO  BRUNO'S
    
    <table>
       RIGHE CON DATI DEL FORNITORE MAGLIFICIO  BRUNO'S
    </table>
    
    ecc.....
    come posso impostare una cosa del genere in blade??

  2. #2
    In PHP (es. nel controller), cicla per tutti i risultati e ricrea l'array raggruppando per fornitore.

    In blade usa due foreach() innestati per ciclare per i fornitori e per i prodotti da mostrare nelle tabelle.

    Oppure, ribalta la query selezionando i fornitori e poi un with('prodotti'). In questo modo cicli per i fornitori e poi per i prodotti direttamente in blade.
    Ultima modifica di filippo.toso; 26-04-2022 a 14:02

  3. #3
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    In PHP (es. nel controller), cicla per tutti i risultati e ricrea l'array raggruppando per fornitore.

    In blade usa due foreach() innestati per ciclare per i fornitori e per i prodotti da mostrare nelle tabelle.

    Oppure, ribalta la query selezionando i fornitori e poi un with('prodotti'). In questo modo cicli per i fornitori e poi per i prodotti direttamente in blade.
    ciao!

    intanto grazie per la risposta!

    vorrei evitare di toccare la query, perchè usata anche da altre parti.
    quindi proseguirei con la prima opzione.
    solo che non ho ben capito cosa intendi per "ricrea l'array raggruppando per fornitore".

  4. #4
    dovrei aver fatto.

    lato controller:
    codice:
    $newArr = array();
    foreach ($resDd as $key => $item) {
        $newArr[$item['fornitore']][$key] = $item;
    }
    
    $arrData = array(
        'dati' => $newArr
    );
    $viewTpl = 'interr_vendite';
    $pdf = PDF::loadView($viewTpl, ['data' => $arrData]);
    return $pdf->download('vendite.pdf');
    lato template:
    codice:
    @foreach($data['dati'] as $key => $val)
    
        <h3>
            Fornitore: {{$key}}
        </h3>
    
    
        <table class="minimalistBlack">
    
            <thead>
                <tr>
                    <th>Articolo</th>
                    <th>Colore</th>
                    <th>Taglia</th>
                    <th>Qta</th>
                    <th>Prezzo</th>
                    <th>Valore</th>
                </tr>
            </thead>
    
            <tbody>
                @php($tot = 0)
                @php($totValore = 0)
    
                @foreach($val as $v)
    
                    <tr>
                        <td>{{$v['descrizione']}}</td>
                        <td>{{$v['colore']}}</td>
                        <td>{{$v['tg']}}</td>
                        <td>{{$v['qta']}}</td>
                        <td>{{$v['netto']}}</td>
                        <td>{{$v['netto'] * $v['qta']}}</td>
                    </tr>
    
                    @php($tot += $v['qta'])
                    @php($totValore += ($v['netto'] * $v['qta']))
    
                @endforeach
            </tbody>
    
            <tfoot>
                <tr>
                    <th>TOTALE</th>
                    <th></th>
                    <th></th>
                    <th>{{$tot}}</th>
                    <th></th>
                    <th>{{$totValore}}</th>
                </tr>
            </tfoot>
        </table>
    
    @endforeach
    si accettano suggerimenti ovviamente!

  5. #5
    Visto che cicli già sui risultati nel controller, perchè non sposti li la logica di business relativa a $tot e $totValore?

  6. #6
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Visto che cicli già sui risultati nel controller, perchè non sposti li la logica di business relativa a $tot e $totValore?

    nel senso di fare la somma nel controller e di aggiungere i valori nel $newArr??

  7. #7
    Esatto.

    Personalmente avrei lavorato direttamente sulla query con withSum() etc.

  8. #8
    la query fa la sum per articolo in realtà, non per fornitore.
    poi devo visualizzare il totale alla fine di ogni tabella.
    ecco perchè lo calcolo così!

    poi non sto usando i model, ma il tutto si trova in una stored procedure in cui costruisco l'istruzione in base ai parametri che mi passano.
    però si, potrei anche spostare quel pezzo di codice come suggerito.
    domani lo faccio!

    grazie mille per le dritte!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.