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_at
et je l'ai modifiée created_ats
en 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_id
Comme pivot_set_id
,
eqtype_jobs
. job_id
Comme pivot_job_id
, eqtype_jobs
. created_ats
Comme pivot_created_ats
, eqtype_jobs
. updated_at
Que
pivot_updated_at
, eqtype_jobs
. id
Que pivot_id
de jobs
jointure interne eqtype_jobs
sur jobs
. id
= eqtype_jobs
. job_id
où
eqtype_jobs
. set_id
= 56 commande par la pivot_created_at
limite 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 s
de 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();