laravel-compendium

Compendio – Laravel

3 minuti
18/11/2022
Tempo di lettura: 5 min.

Questo compendio ha la funzione di contenitore per tutte le note, memo e brevi consigli che mi capiterà di raccogliere durante lo sviluppo dei miei progetti.

L'immagine di copertina non c'entra niente con il contenuto.

  1. Stampare variabili php nelle stringhe “{$var}”
  2. inline-block adatta la larghezza dell’elemento al contenuto.
  3. foreach(range(min,max) as $i) permette di effettuare un ciclo senza usare oggetti.
  4. Si può usare implode() su una collezione per creare una stringa.
  5. optional(espressione)->metodo() esegue metodo() solo se l’espressione non è null.
  6. array_merge può essere sostituito da $array+['val1','val2'].
  7. Per estrarre il primo errore di validazione tra gli attributi di un array: $errors->first('array.*').
  8. Solitamente, i dati ottenuti tramite dalle API vengono trasformati prima con toJson() e poi con collect().
  9. Per aggiornare contemporaneamente più record si può usare upsert. Risulta utile soprattutto quando si lavora con i file excel.
  10. View::share('key', 'value'), utilizzato nel metodo boot di AppServiceProvider, permette di condividere variabili con tutte le views dell’applicazione. Se le informazioni provengono dal db, conviene salvarle in cache (cache()->remember(key,ttl,value)).
  11. Per intercettare LazyLoading anche in produzione, aggiungere al metodo boot dell’ AppServiceProvider la funzione handleLazyLoadingViolationUsing.
  12. Rule::unique() può essere estesa con where().
  13. Si può ottenere la query in SQL dal querybuilder usando ->toSql() o ->toRawSql() (che include i parametri) invece di ->get().
    Se ci sono più query o servono più dettagli si può usare DB::enableQueryLog() + DB::getQueryLog()/getRawQueryLog().
  14. Per creare URL temporanei (come quelli per le email di invito), si può usare signedRoute con il middleware signed.
  15. wasRecentlyCreated si può usare come controllo su un’istanza di un model per controllare se è appena stata creata dopo un firstOrCreate oppure updateOrCreate.
  16. Si possono utilizzare componenti predefiniti (Console Components) per creare comandi personalizzati.
  17. I metodi e le proprietà degli oggetti possono essere resi dinamici usando variabili al posto dei nomi ($oggetto->$property / $oggetto->$method).
  18. Le migration possono essere testate con php artisan migrate --pretend.
  19. Le migration possono essere eseguite un passo alla volta con php artisan migrate --step.
  20. Tra i vari helper, odds serve a eseguire funzioni con una determinata probabilità.
  21. Si può conservare lo stato checked degli input in caso di errori di validazione con la sintassi @checked(in_array($value, old('array_name', []))).
  22. Si può cambiare il valore di un parametro di configurazione in runtime con config('chiave' => 'valore').
  23. Si possono passare i parametri alle funzioni tramite nome anzichè posizione con nome: val.
  24. Per forzare il ritorno in formato JSON, senza costringere il client a usare header specifici nella richiesta, si può creare un middleware che aggiunge $request->headers('Accept','application/json').
  25. Nelle Form Request, per adattare i nomi delle variabili nel caso siano diversi tra frontend e backend, si può utilizzare il metodo prepareForValidation.
  26. In AppServiceProvider si posso definire le macro. Ad esempio si può impostare Lang::handleMissingKeysUsing per notificare le traduzioni mancanti.
  27. Per fare truncate di una tabella con chiavi esterne, bisogna prima fare disableForeignKeyConstraints(), effettuare l’operazione e poi enableForeignKeyConstraints().
  28. CarbonPeriod permette di creare tabelle di date.
  29. Si possono creare subquery concatenando alle query il metodo addSelect().
  30. “?:” si chiama Elvis Operator e ritorna il primo operando se è un valore true, altrimenti ritorna il secondo. Il Null Coalescing Operator “??” si comporta allo stesso modo il valore null.
  31. Aggiungendo withDefault() alla fine di una relationship, si può restituire un’istanza di default quando una relazione é null.
  32. Per aggiungere dinamicamente condizioni where al query builder, si può utilizzare un unico metodo where a cui passare come argomento un array con i nomi delle colonne come chiavi (es. where(['colonna1' => '123', 'colonna2' => 'abc']) )