私は製品システムを作成しており、APIとしてLaravelを使用しています。私は多対多の関係を持つProductモデルとFileモデルを持っています。製品にファイルを割り当てる際には、ファイル・オブジェクトの配列をProductコントローラーに渡し、関係がすでに存在するかどうかを確認します。それがなければ私はこの新しい関係を保存します。ここでは、これを行うコードは次のとおりです。Laravel Eloquentは配列に存在しないすべての行を取得します
if(!empty($requestProductVars['files']) && count($requestProductVars['files'])) {
$files = $requestProductVars['files'];
foreach($files as $file) {
$fileId = $file['id'];
$fileRecord = File::find($fileId);
if(!$product->files->contains($fileRecord)) {
$product->files()->save($fileRecord);
}
}
}
$product->save();
このすべてが正常に動作しますが、私は今実装しようとしていますことは少しトリッキーです。製品にUNASSIGNEDというファイルがある場合、このレコードを製品との関係として削除します。だから、私はそれを行う必要がある$ requestProductVars ['ファイル']配列に存在しないピボットテーブルから行を削除します。
プロジェクトのすべてのファイルIDを取得してオブジェクトの配列と比較し、要求配列に存在しないものはすべて削除することを考えていましたが、これは少し重いリソースのようです。誰もが、この機能がより良い方法で達成されるということを知っていますか?
おかげ
私が探していたもの。どうもありがとう。 – devoncrazylegs