Laravelでは、attach()またはdetach()を使用してリレーションに何かを追加または削除した後、コレクションは変更されていません。そのため、[1, 2]
を含むリアライゼーションのモデルがある場合、この後:
$model->relation()->detach(1);
$model->relation()->attach(3);
まだ[1, 2]
が含まれています!更新するにはどうすればよいですか?
あなたは簡単にlaravelに単一のコマンドでそれをするように言うことができます:
$model->load('relation');
関係コレクションを更新するように指示し、$model->relation
は正しい値を表示するようになりました。
すべてのリレーションを必要に応じて強制的にリロードし、モデル内にいる場合は、次を使用できます。
$this->relations = [];
Eloquentクエリビルダーを使用することができます。
$freshCollection = $user->roles()->get();
結論:ここにある3つのソリューション
$model->load('relation');
unset($model->relation);
$freshCollection = $user->roles()->get();`
設定を解除して、システムをオンデマンドでリロードしてください。
unset($model->relation)