Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuidas sünkroonib sünkroonimine duplikaatsed ID -d


Kuidas sünkroonib sünkroonimine duplikaatsed ID -d


Laraveli meetodil "SyncitHoutDetaching" on loodud lisama uusi suhteid paljudele pöördetabelile ilma olemasolevaid eemaldamata. Mis puudutab duplikaate ID -sid, on siin üksikasjalik selgitus:

- Kui helistate "SyncithoutDetaching" -ga ID -dega, kinnitab Laravel ainult need ID -d, mida selle suhte pöördetabelis veel pole. See ei eemalda olemasolevaid suhteid, erinevalt standardsest sünkroonimismeetodist, mis eraldab kõik ID -d, mis ei ole esitatud massiivis [1] [5] [6].

- Sünkroonimine ise ei takista iseseisvalt duplikaate, kui pöördetabel või teie rakenduse loogika neid võimaldab. Kui pöördetabelil pole võõraste võtmete kombinatsioonile ainulaadset piirangut, on võimalik sisestada duplikaatide sisestamine, kui meetodit kutsutakse valesti või kui andmebaasi skeem lubab seda [3] [7] [8].

- Koopiate vältimiseks on soovitatav jõustada unikaalse komposiitvõtit pöördetabeli veergudes (nt kaks võõrvõtme veergu) andmebaasi tasandil. See tagab, et duplikaatridade sisestamise katsed ebaõnnestuvad, ja saate selliste eranditega oma rakenduses hakkama [8].

- Sisemiselt töötab `SyncitHoutDetaching", nimetades "Sync" meetodit teise parameetri komplekti väärtuseks "Vale", mis tähendab, et "ärge eralduge". See paneb selle lisama uusi kandeid ilma olemasolevaid eemaldamata. See kontrollib olemasolevaid ID -sid ja lisab ainult puuduvad, nii et tavaliselt takistab see toimingu enda ajal duplikaatide lisamist, kui sisendmassiiv ei sisalda duplikaate [1] [6].

- Kui duplikaadid ikka ilmuvad, on see sageli tingitud kummastki:
- sisendmassiiv, mis sisaldab duplikaatide ID -sid.
- Andmebaasi tasemel piirangute puudumine.
- kasutades `kinnita ()`, selle asemel, et sünkroonida () `, kuna` kinnitus () `lisab alati uusi ridu, sõltumata olemasolevatest, põhjustades potentsiaalselt duplikaate [6] [7].

Kokkuvõtlikult võib öelda, et "SyncithoutDetaching" väldib oma töö ajal duplikaatide lisamist, ühendades ainult ID -d, mis pole veel seotud, kuid tugineb duplikaatide täielikuks ennetamiseks nõuetekohase sisendi ja andmebaasi piirangutele. Parim tava on unikaalse indeksi lisamine pöördetabelisse, et tagada, et duplikaatseid ridu ei eksisteeri. Duplikaatide ilmnemisel näitab see tavaliselt seotud meetodite puuduvaid piiranguid või ebaõiget kasutamist, näiteks "kinnitus".

See meetod on eriti kasulik siis, kui soovite lisada suhteid, mõjutamata olemasolevaid ja riskimata duplikaadiga kannetega, kui seda õigesti andmebaasi korraliku kujundamisega kasutatakse.

Tsitaadid:
]
]
[3] https://github.com/laravel/framework/issues/21639
]
]
]
[7] https://www.youtube.com/watch?v=dcrisowswti
[8] https://github.com/laravel/framework/issues/14270