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?
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.
Si vous souhaitez forcer toutes vos relations à se recharger au besoin et que vous êtes dans votre modèle, vous pouvez utiliser:
$this->relations = [];
Il est possible d'utiliser le générateur de requêtes Eloquent:
$freshCollection = $user->roles()->get();
Conclusion: trois solutions ici
$model->load('relation');
unset($model->relation);
$freshCollection = $user->roles()->get();`
il suffit de le désactiver et de laisser le système se recharger à la demande.
unset($model->relation)