Laravel 8 App problem when i try to take data with join

  laravel, laravel-8, mysql

Goodmorning everyone,

As in the title I find myself developing a web application with Laravel where I need to take the data with a join between two tables.
Tables are raccomandata and sap_abilitati where in the raccomandata table the idCliente field is foreign key and refers to the id field of the sap_abilitati table.

When I run the query that I need, without the join, the data is correctly taken from the DB.

But when I do the join, which I think I do correctly, I don’t get any results.

Let me explain, to verify that the data taken are grouped correctly (as you can see I used a groupBy), I execute the dd($racc); in the code.
Well, in the case of a query without a join the dd($racc); is executed, while in the case of a query with a join it is not executed.

Do you have any suggestions or advice? I can’t understand what this behavior gives

  • Code without join:
// GESTIONE DELLE SPEDIZIONI
    public function gestisciSpedizione(Request $request){
       
        try{

            set_time_limit(-1);

            //devo recuperare le raccomandate dal DB con isGenerated = 0 e per data e lotto

            //prendo la data odierna, devo spedire quelle con data precedente.
            $date = date('Y-m-d');
            if($request->input('sap') != 'all'){
                //dd('Unico Sap');
                // qui recupero le raccomandate dello specifico SAP selezionate in fase di prenotazione

                    //recupero le raccomandate
                    $racc = Raccomandata::select('*')
                    ->where([
                        ['isGenerated', '=', '0'], //non generate
                        ['created_at', '>', $date.' 00:00:00'], //la data di creazione deve essere precedente la data odierna
                        ['idCliente', '=', $request->input('sap')], //selezioniamo le raccomandate solo per il cliente
                        
                    ])
                    ->get();
                    //raggruppiamo per idCommessa e cronologico
                    $racc = $racc->groupBy(['idCommessa', 'cronologico'])->toArray();   
                    dd($racc);
                    //passo alla creazione dei file
                    //richiamo la procedura per generare i file .xml
                    return App::call('[email protected]', ['racc'=>$racc, 'all' => '0']);
            }
            else{
                 // TODO

               }


            //loggiamo l'evento e redirectiamo con il messaggio di success dell'operazione
            Log::channel('custom_log')->info('L'utente '.Auth::user().' ha prenotato con successo la spedizione numero: '.$request->input('codice_prenotazione').' FILE :');

            return redirect()->back()->with('success', 'Prenotazione della spedizione effettuata con successo');

        }catch(Exception $e){
            Log::channel('custom_log')->info('L'utente '.Auth::user().' non è riuscito a prenotare la spedizione COD:'.$request->input('codice_prenotazione').' ERRORE:'.$e);

            return redirect()->back()->with('error', 'Non è stato possibile prenotare la spedizione numero: '.$request->input('codice_prenotazione'));
        }
    }

  • code With Join:
// GESTIONE DELLE SPEDIZIONI
    public function gestisciSpedizione(Request $request){
       
        try{

            set_time_limit(-1);

            //devo recuperare le raccomandate dal DB con isGenerated = 0 e per data e lotto

            //prendo la data odierna, devo spedire quelle con data precedente.
            $date = date('Y-m-d');
            if($request->input('sap') != 'all'){
                //dd('Unico Sap');
                // qui recupero le raccomandate dello specifico SAP selezionate in fase di prenotazione

                    //recupero le raccomandate
                    $racc = Raccomandata::select('*', 'sap_abilitati.SAP')
                    ->join('sap_abilitati', 'sap_abilitati.id', '=', 'raccomandata.idCliente')
                    ->where([
                        ['isGenerated', '=', '0'], //non generate
                        ['created_at', '>', $date.' 00:00:00'], //la data di creazione deve essere precedente la data odierna
                        ['idCliente', '=', $request->input('sap')], //selezioniamo le raccomandate solo per il cliente
                        
                    ])
                    ->get();
                    //raggruppiamo per idCommessa e cronologico
                    $racc = $racc->groupBy(['sap_abilitati.SAP', 'idCommessa', 'cronologico'])->toArray();   
                    dd($racc);
                    //passo alla creazione dei file
                    //richiamo la procedura per generare i file .xml
                    return App::call('[email protected]', ['racc'=>$racc, 'all' => '0']);
            }
            else{
                 // TODO

               }


            //loggiamo l'evento e redirectiamo con il messaggio di success dell'operazione
            Log::channel('custom_log')->info('L'utente '.Auth::user().' ha prenotato con successo la spedizione numero: '.$request->input('codice_prenotazione').' FILE :');

            return redirect()->back()->with('success', 'Prenotazione della spedizione effettuata con successo');

        }catch(Exception $e){
            Log::channel('custom_log')->info('L'utente '.Auth::user().' non è riuscito a prenotare la spedizione COD:'.$request->input('codice_prenotazione').' ERRORE:'.$e);

            return redirect()->back()->with('error', 'Non è stato possibile prenotare la spedizione numero: '.$request->input('codice_prenotazione'));
        }
    }

Source: Laravel

Leave a Reply