Debug delle query in Laravel 12

Mattepuffo's logo
Debug delle query in Laravel 12

Debug delle query in Laravel 12

Laravel 12 mette a disposizione altri strumenti per le query su db.

In questo articolo vediamo come fare un pò di debug con messaggi sicuramente migliori.

Supponiamo di avere questo model con due soli campi:

class Persona extends Model {
  protected $table = 'persone';
  protected $primaryKey = 'id';
  public $incrementing = true;
  public $timestamps = false;

  protected $fillable = [
      'id',
      'email',
  ];

}

Supponiamo che io esegua questa query:

class TestController extends Controller {

  public function index(): JsonResponse {
    try {
      $persone = Persona::query()
          ->select(['nome'])
          ->get();

      return response()->json($persone);
    } catch (QueryException $ex) {
      return response()->json(['error' => $ex->getMessage()]);
    }
  }

}

Mi uscirà questo errore:

{
"error": "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'nome' in 'SELECT' (Connection: mysql, SQL: select `nome` from `persone`)"
}

Per noi tecnici non è un problema capire cosa succede, ma non è leggibile per l'utente finale.

Ma adesso possiamo usare getRawSql:

class TestController extends Controller {

  public function index(): JsonResponse {
    try {
      $persone = Persona::query()
          ->select(['nome'])
          ->get();

      return response()->json($persone);
    } catch (QueryException $ex) {
      return response()->json(['error' => $ex->getRawSql()]);
    }
  }

}

Che ci dirà questo:

{
"error": "select `nome` from `persone`"
}

Enjoy!


Condividi

Commentami!