Laravel - mettre à jour la relation du modèle avec un autre modèle
P粉674999420
2023-09-01 22:36:33
<p>Il existe une relation plusieurs-à-plusieurs entre le modèle d'événement et le modèle de patient. Un incident peut impliquer plusieurs patients, et un patient peut être impliqué dans plusieurs incidents. </p>
<p>Si l'utilisateur crée une copie du modèle de patient, nous souhaitons pouvoir fusionner les deux modèles de patient en un seul. Cela signifie que je souhaite déplacer les événements impliquant le patient 1 vers le patient 2, y compris d'autres attributs sur le tableau croisé dynamique. </p>
<p>J'ai essayé des choses simples</p>
<pre class="brush:php;toolbar:false;">Casualty::where('patient_id', $patientOne->getKey())->update(['patient_id' => $patientTwo- >getKey()]);</pre>
<p>Mais ça ne marche pas. L'utilisation de la méthode <code>updateOnExistingPivot()</code> signifie que je dois parcourir chaque événement pour le patient 1 et exécuter une requête de base de données distincte pour mettre à jour le patient vers le patient 2. </p>
<p>J'ai également essayé de mettre à jour l'enregistrement comme ceci</p>
<pre class="brush:php;toolbar:false;">$patientOne->incidents()->update(['patient_id' => $patientTwo->getKey()]);< /pré>
<p>Cela ne fonctionne pas non plus car il n'y a pas de colonne <strong>patent_id</strong> </p>
<p>Comment puis-je y parvenir ou est-ce que je fais quelque chose de mal ? </p>
Je ne suis pas sûr de comprendre ce que vous voulez dire, souhaitez-vous attribuer plus de patients au même incident ? Vous pouvez utiliser la méthode
belongsToMany
关系并创建一个数据透视表。然后,当您想要更新数据时,只需使用sync
.Vous pouvez également essayer d'utiliser
json_encode()
pour les stocker dans une colonne contenant uniquement l'ID utilisateur et les récupérer plus tard.Désolé, je ne peux pas fournir plus d'informations car le problème n'est pas bien décrit.