Relation de requête Eloquent
J'ai News
modèle, et News
a beaucoup de commentaires, donc je l'ai fait en News
modèle:
public function comments(){
$this->hasMany('Comment', 'news_id');
}
Mais j'ai aussi le champ trashed
dans comments
table, et je ne veux sélectionner des commentaires qui ne sont pas à la corbeille. Donc trashed <> 1
. Alors je me demande est-il un moyen de faire quelque chose comme ceci:
$news = News::find(123);
$news->comments->where('trashed', '<>', 1); //some sort of pseudo-code
Est-il un moyen d'utiliser la méthode ci-dessus, ou devrais-je écrire quelque chose comme ceci:
$comments = Comment::where('trashed', '<>', 1)
->where('news_id', '=', $news->id)
->get();
source d'informationauteur Vuk Stanković
Vous devez vous connecter pour publier un commentaire.
L'un de ces devrait fonctionner pour vous, choisir celui que vous aimez le plus:
Désireux de chargement.
Chargement différé
Je ne pouvais pas aider mais noter, cependant, que ce que vous êtes probablement en train de faire est de poignée molle de la suppression, et que Laravel a une fonctionnalité intégrée pour vous aider à vous: http://laravel.com/docs/eloquent#soft-deleting
rmobis's réponse était ce dont j'avais besoin, mais il déclenche une erreur dans le courant de Laravel 5. Vous avez de l'utiliser avec un tableau associatif maintenant:
M'a fallu un certain temps pour le comprendre, j'espère que ça aidera d'autres personnes.
Lire la suite dans Laravel de Docs (5.6): https://laravel.com/docs/5.6/eloquent-relationships#querying-relations
Vous pouvez le faire simplement dans votre éloquent fichier de modèle.
faire comme ceci :
appeler comme ceci :