Laravel - モデルの関係を別のモデルに更新する
P粉674999420
2023-09-01 22:36:33
<p>イベント モデルと患者モデルの間には多対多の関係があります。 1 つのインシデントには複数の患者が関与する場合があり、1 人の患者が複数のインシデントに関与する場合もあります。 </p>
<p>ユーザーが患者モデルのコピーを作成した場合、2 つの患者モデルを 1 つにマージできるようにしたいと考えています。これは、ピボット テーブル上の他の属性も含めて、患者 1 に関係するイベントを患者 2 に移動したいことを意味します。 </p>
<p>簡単なことをやってみました</p>
<pre class="brush:php;toolbar:false;">Casualty::where('patient_id', $patientOne->getKey())->update(['patient_id' => $patientTwo- >getKey()]);</pre>
<p>しかし、それはうまくいきません。 <code>updateOnExistingPivot()</code> メソッドを使用するということは、患者 1 の各イベントを反復処理し、別のデータベース クエリを実行して患者を患者 2 に更新する必要があることを意味します。 </p>
<p>このようにレコードを更新してみました</p>
<pre class="brush:php;toolbar:false;">$patientOne->incidents()->update(['patient_id' => $patientTwo->getKey()]);< /pre>
<p>イベント テーブルには <strong>patent_id</strong> 列がないため、これも機能しません。 </p>
<p>どうすればこれを達成できますか?それとも何か間違ったことをしていますか? </p>
何を言っているのか分かりませんが、より多くの患者が同じ事件に起因すると考えますか?
belongsToMany
リレーションシップを使用して、ピボット テーブルを作成できます。データを更新する場合は、sync
メソッドを使用するだけです。json_encode()
を使用して、ユーザー ID のみを保持する列にそれらを保存し、後で取得することもできます。申し訳ありませんが、問題が詳しく説明されていないため、これ以上の情報を提供することはできません。