Le moyen le plus simple consiste à commettre une erreur délibérée . Par exemple, je veux voir la requête SQL complète de la relation suivante:
public function jobs()
{
return $this->belongsToMany(Job::class, 'eqtype_jobs')
->withPivot(['created_at','updated_at','id'])
->orderBy('pivot_created_at','desc');
}
Je viens de faire une colonne pour ne pas être trouvée, ici je choisis created_atet je l'ai modifiée created_atsen ajoutant la fin sà:
public function jobs()
{
return $this->belongsToMany(Job::class, 'eqtype_jobs')
->withPivot(['created_ats','updated_at','id'])
->orderBy('pivot_created_at','desc');
}
Ainsi, le débogueur renverra l'erreur suivante:
(4/4) ErrorException SQLSTATE [42S22]: colonne non trouvée: 1054 Unknown column 'eqtype_jobs.created_ats' dans 'liste des champs' (SQL: sélectionnez
jobs*,. eqtype_jobs. set_idComme pivot_set_id,
eqtype_jobs. job_idComme pivot_job_id, eqtype_jobs. created_ats
Comme pivot_created_ats, eqtype_jobs. updated_atQue
pivot_updated_at, eqtype_jobs. idQue pivot_idde jobsjointure interne eqtype_jobssur jobs. id= eqtype_jobs. job_idoù
eqtype_jobs. set_id= 56 commande par la pivot_created_atlimite de décalage desc 20 0) (Voir: /home/said/www/factory/resources/views/set/show.blade.php)
Le message d'erreur ci-dessus renvoie la requête SQL complète avec l'erreur
SQL: select jobs.*, eqtype_jobs.set_id as pivot_set_id, eqtype_jobs.job_id as pivot_job_id, eqtype_jobs.created_ats as pivot_created_ats, eqtype_jobs.updated_at as pivot_updated_at, eqtype_jobs.id as pivot_id from jobs inner join eqtype_jobs on jobs.id = eqtype_jobs.job_id where eqtype_jobs.set_id = 56 order by pivot_created_at desc limit 20 offset 0
Maintenant, supprimez simplement le supplément sde created_at et testez ce SQL comme vous le souhaitez dans n'importe quel éditeur SQL tel que l'éditeur SQL phpMyAdmin!
Remarquer:
La solution a été testée avec Laravel 5.4 .
echo User::where('status', 1)->toSql();