Hypothèse
One Piecethread
(帖子) 预加载 comments
(评论)和 comments.user
(utilisateur qui a commenté)
Habituellement, vous pouvez l'obtenir avec une seule ligne de code
$thread = Thread::with('comments', 'comments.user')->first();
Cela ne pose aucun problème, et cela peut être très bien interrogé et affiché.
$comment = $thread->comments[0]; // Comment Model
$user = $comment->user; // User Model
Mais la demande actuelle est la suivante : si les données d'un utilisateur qui ont commenté sont supprimées, les données de commentaire naturellement liées ne peuvent pas être affichées, sinon les informations seront incomplètes (est-ce une demande normale, n'est-ce pas ?)
Alors logiquement, il n'y a que inner join
查询就可以过滤掉不符合的数据.Laravel
的Eloquent
目前我只查到with
méthode
Ce besoin peut être facilement résolu grâce à Yii
的ActiveRecord
$thread = Thread::find()->innerJoinWith(['comments', 'comments.user'])->one();
Je ne le connais pas très bien, je souhaite donc demander à un expert dans ce domaine comment le résoudre !Laravel
La jointure dans le générateur de requêtes dans Laravel adopte par défaut le comportement de la jointure interne, le manuel le dit
Eloquent ORM n'a pas de conditions de requête de jointure directe, mais il existe des solutions de contournement, comme mentionné ci-dessus.
Mais je n'utilise généralement pas ORM pour des raisons de performances. J'utilise le générateur de requêtes.
Écrivez simplement join in the relation, ->hasMany()->join()->where() Vous pouvez l'écrire comme vous le souhaitez.
En fait, ce que je demande concerne principalement l'utilisation. Ce type de demande est très courant. Je demande principalement s'il y a des questions à cet égard
.Ceci est implémenté dans
rails
Et
laravel
actuellement, je n'en vois qu'un seulavec
rails
里都是有实现的而
laravel
目前我看到的只有一个with
rails
里有preload
、includes
、Eager load
、Joins
, 可以来区别eager loading
数据的方式.这里有篇文章来讲解
http://www.mamicode.com/info-...
而
Yii
的ActiveRecord
也有with
,joinWith
(inner join, left join ....)innerJoinWith
, 来根据需求做eager loading
其他的我就不查了. 并不是我要损
laravel
, 我是到现在也没有觉得laravel
的Eloquent
rails
aprécharge
,inclut
,Charge impatiente
,Joins
, vous pouvez venir ici Différentes manières decharger avec impatience
les données.Voici un article pour expliquer
http://www.mamicode.com/info-...🎜 🎜Et
ActiveRecord
deYii
a égalementwith
,joinWith
(jointure interne, jointure gauche....)innerJoinWith
, pour effectuer unchargement rapide
selon les besoins🎜 🎜Je ne vérifierai pas d'autres choses. Ce n'est pas que je veuille endommagerlaravel
, mais je ne pense toujours pas queéloquent
delaravel
. est si puissant.