これをアプローチする方法が本当にわからないが、私はしたentry_id(外部キー)と、このようなキー/値のメタテーブルがあります。私は、キー/値の新しいリストをentry_id 4
を更新するLaravel 5 - firstOrCreate()および古いアイテムを削除しますか?
id | entry_id | key | value
-------------------------------------------
1 4 Fruit 1 Apple
2 4 Fruit 2 Banana
3 4 Fruit 3 Cantaloupe
を次のようになりペアFruit 1/Apple
とFruit 4/Dragonfruit
、:だからここ
id | entry_id | key | value
-------------------------------------------
1 4 Fruit 1 Apple
4 4 Fruit 4 Dragonfruit
は起こるべき3つの事です:
Fruit 1/Apple
は変更されていないため、同じままにしてください。Fruit 4/Dragonfruit
は新しいものですので、追加する必要があります。- 新しい更新リストには
Fruit 2/Banana
またはFruit 3/Cantaloupe
が含まれていないため、削除する必要があります。
は、私はこのようなfirstOrCreate()
を使用してみました:
// $metas is an array of the new list
foreach ($metas as $meta) {
$entry->entryMeta()->firstOrCreate([
'entry_id' => $entry->id,
'key' => $meta->key,
'value' => $meta->value
]);
}
。新しいリストに含まれていない古いアイテムを削除する最後の箇条書きは機能しません(これはfirstOrCreate()
の一部ではありません)。
どのように3つの箇条書きのすべての世話をする考えですか?私はどうなるのか
IDは既存のエントリでは同じままで、新しいエントリでは自動的にインクリメントする必要がありますか? – tam5
さらに、あなたが作業している 'entry_id'を持つ行だけを変更したいときは、他の行は変更されずに残っています。これが正しいかどうかをお知らせください。 – tam5
@tam私はちょうどそこにあったものを再挿入したくないのです(アイテムが更新されるたびに、システム上でそれを行うより多くの作業があり、すべてをきれいにして再挿入しますか?)2番目のコメントを修正し、私は一度に一つの 'entry_id'に属するキー/値の行だけを扱います。 – Wonka