web-dev-qa-db-fra.com

Comment recharger une collection de relations dans laravel?

Dans laravel, après avoir utilisé attach () ou detach () pour ajouter ou supprimer quelque chose d'une relation, la collection n'a pas changé. Donc, si j'ai un modèle dont la réalité contient [1, 2], après ça:

$model->relation()->detach(1);
$model->relation()->attach(3);

il contiendra toujours [1, 2]! Comment le rafraîchir?

42
Benubird

Vous pouvez facilement dire à laravel de le faire avec une seule commande:

$model->load('relation');

Lui dira de rafraîchir la collection de relations, et $model->relation affichera maintenant les valeurs correctes.

80
Benubird

Si vous souhaitez forcer toutes vos relations à se recharger au besoin et que vous êtes dans votre modèle, vous pouvez utiliser:

$this->relations = [];
3
Sabrina Leggett

Il est possible d'utiliser le générateur de requêtes Eloquent:

$freshCollection = $user->roles()->get();
2
James Akwuh

Conclusion: trois solutions ici

$model->load('relation');

unset($model->relation);

$freshCollection = $user->roles()->get();`
1
kevinYang

il suffit de le désactiver et de laisser le système se recharger à la demande.

unset($model->relation)
0
Yevgeniy Afanasyev