Gamyklos ir sėjamieji yra abi priemonės, naudojamos duomenų bazių valdyme, ypač programinės įrangos kūrimo kontekste, kad būtų galima generuoti ir užpildyti bandymą ar pradinius duomenis į duomenų bazes. Jie padeda automatizuoti ir supaprastinti duomenų kūrimo procesą, skirtą testavimui ar programoms nustatyti. Tačiau jie gana skirtingai tvarko ryšius tarp modelių dėl jų skirtingų tikslų ir mechanizmų.
Gamyklos daugiausia dėmesio skiria vieno ar susijusio modelio egzempliorių generavimui su atsitiktine tvarka ar iš anksto nustatytais atributais, dažnai naudodamos Fakerio bibliotekas. Kita vertus, sėjamieji labiau susiję su daugybe instrukcijų, skirtų duomenų bazei užpildyti bet kokiais duomenimis, kurie gali apimti kelis modelius ir jų ryšius, vykdymą.
apibrėžimas ir tikslas
Gamyklos yra sukurtos taip, kad būtų galima lengvai ir nuosekliai sukurti individualius ar susijusius modelio pavyzdžius su padirbtais duomenimis. Jie leidžia kūrėjams apibrėžti modelių brėžinius, nurodant, kaip reikia užpildyti atributus, ir įgalinti daugelio to modelio pavyzdžių generavimą bandymams ar duomenų bazių sėjimui. Gamyklos dažnai dirba atskirai arba su labai aiškiais modelių ryšiais, daugiausia dėmesio skiriant modelių atributų požymiams ir egzistavimui.
Sėjamieji tarnauja kaip scenarijai ar klasės, galinčios paskambinti į gamyklas ar tiesioginius duomenų bazių įterpimus, kad užpildytų duomenų bazę. Sėjamieji yra holistiškesni ir procedūriniai, kontroliuodami duomenų kūrimo tvarką ir logiką. Jie užtikrina, kad duomenų populiacija įvyktų teisinga seka, kad būtų išlaikytas duomenų vientisumas, ypač kai dalyvauja kelios tarpusavyje priklausomos lentelės.
santykių tvarkymas gamyklose
Modelių gamyklose santykiai paprastai tvarkomi apibrėžiant santykius pačių gamyklos apibrėžimų viduje. Pvz., Jei vartotojo modelis turi ryšį vienas su vienu profilio modeliu, vartotojų gamykla gali apibrėžti, kad jis „turi“ profilį naudojant santykių metodus ar atšaukimus, kurie sukuria ir susieja susijusius profilius kuriant vartotojus.
Gamyklos gali įterpti reliacinę logiką taip, kad, kai egzemplioriui sukurti naudojama modelio gamykla, ji automatiškai sukuria ir susieja susijusius modelio egzempliorius toje pačioje operacijoje. Tai dažnai daroma naudojant tokius metodus kaip „turi ()`, `for ()` arba pasirinktinius ryšių atšaukimus, kurie generuoja susijusius modelius. Šis požiūris palengvina testavimą, nes susiję duomenys sukuriami skaidriai kartu su pagrindiniais modelio duomenimis.
sėjamųjų santykių tvarkymas
Sėjamieji naudoja gamyklas, tačiau organizuoja bendrą kūrimo srautą ir tvarką. Kadangi sėjimas gali apimti sudėtingus ryšius, sėjamieji paprastai valdo ryšius, užtikrindami tėvų modelių sukūrimą prieš vaikų modelius, kad atitiktų duomenų bazės apribojimus (pvz., Užsienio raktus). Pavyzdžiui, santykiuose, kai vartotojas priklauso organizacijai, pirmiausia sėjamieji sukurtų organizaciją, tada sukurtų vartotoją su tinkamu užsienio raktu, susiejančiu atgal su organizacija.
Sėjamieji gali manipuliuoti ar koordinuoti duomenų kūrimą bet kokia tvarka ir sujungti paprastus ar sudėtingus duomenų rinkinius, kartais su aiškiais užsienio raktų ar pasukamųjų lentelių tvarkymu daugybe ir daugybe santykių. Jie dažnai tvarko orkestravimą, už kurį gamyklos neatsako, pavyzdžiui, nusprendžia sėjos seką, kad patenkintų duomenų vientisumo taisykles keliose lentelėse.
santykių sudėtingumas ir modeliai
Gamyklos paprastai apibūdina paprastus ar įdėtus modelio ryšius, naudodamos įmontuotus metodus, kurie sukuria susijusius paklausos įrašus. Jie daugiausia dėmesio skiria atominių kūrimo operacijoms, sukuriant modelį ir tiesioginius jo ryšius viename skambutyje. Pvz., Vartotojo gamykla gali apibrėžti ryšį, kad automatiškai sukurtų kelis įrašus arba profilį, kuris priklauso vartotojui, sklandžiai sukuriant įdėtą JSON tipo modelio egzempliorių struktūrą.
Sėjamieji turi aiškiai apibrėžti, kaip duomenys, susiję su daugeliu modelių, bus sukurti tinkama tvarka. Pirmiausia jie gali sukurti visas organizacijas, paskui visus vartotojus (siejančius vartotojus su organizacijomis), tada sukurti įrašus, susietas su vartotojais. Ši tvarka turi būti išlaikyta siekiant patenkinti užsienio raktų apribojimus. Sėjamieji taip pat tvarko sudėtingus scenarijus, tokius kaip sąlyginis sėjimas, aplinkos sėjos arba duomenų kūrimas tik tuo atveju, jei jų dar nėra.
Daugelis santykių
Daugybė santykių su daugybe santykių yra labiau susiję. Gamyklos tai absorbuoja, leisdami užmegzti ryšius naudojant „Pivot“ stalo gamyklas arba naudojant tokius metodus kaip „pridėti ()` laravel “, dažnai gamyklos apibrėžime arba po gamyklos kūrimo. Tai leidžia lengvai generuoti susijusius modelius ir automatiškai susieti juos su „Pivot“ duomenimis.
Tuo tarpu sėjamieji aiškiai koordinuoja daugybę ir daugybę susiejimų, pirmiausia sukuriant abiejų modelių egzempliorius, tada iškviečiant „Pivot“ lentelės įdėklus, naudodami iškalbingus santykių metodus arba tiesiogines duomenų bazių užklausas. Sėjamieji valdo „Pivot“ lentelių populiaciją, susiedami ID ir galbūt pridėdami papildomų „Pivot“ duomenų laukų, užtikrindami, kad duomenų bazė atspindėtų teisingus tarp modelio ryšius.
užsienio raktų priklausomybės
Gamyklos dažnai valdo savo apibrėžimus užsienio raktų priklausomybes. Kai gamykla sukuria modelį, kuris priklauso nuo kito, jis gali lizdus sujungti gamyklas, kad automatiškai sugeneruotų tėvų ar susijusius modelius. Šis požiūris sumažina neegzistuojančių įrašų nuorodos riziką ir supaprastina galiojančių duomenų rinkinių sukūrimą.
Sėjamieji turi aiškiai elgtis su užsienio pagrindinėmis priklausomybėmis, dažnai reikalaudami kruopščiai užsisakyti stalo populiaciją, kad būtų gerbiami šie apribojimai. Pirmiausia sėjamieji yra pirmiausia sukurti tėvų ar nurodytus modelius, tada naudokite savo pagrindinius raktus, kad susiejtumėte priklausomus modelius. Taigi sėjamieji veikia kaip orkestrui, valdantys duomenų bazių populiacijos srautą, atsižvelgiant į santykio vientisumą.
pakartotinis naudojimas ir kompozicija
Gamyklos yra labai daugkartinio naudojimo ir sudėtingos. Jie gali būti apibrėžti vieną kartą ir panaudoti kuriant autonominius ar susijusius egzempliorius su nurodytais ryšiais pakartotinai, palaikant testavimo darbo eigą arba pakartotinai sėklų duomenų generavimą su variantais.
Sėjamieji paprastai būna daugiau procedūrinių scenarijų, mažiau pakartotinai naudojamų atskirai, dažnai sutelkdami dėmesį į tam tikrą duomenų populiacijos scenarijų ar aplinkos nustatymą. Tačiau jie remiasi gamyklomis kaip statybinius blokus ir šias skambučius rašo prasmingai, kad būtų sukurta sudėtinga duomenų aplinka.
Operacijos ir izoliacija
Gamyklos sukuria egzempliorius, paprastai atskirai arba kaip dalis vieno gamyklos skambučio, kuris gali būti suvyniotas į bandymų operaciją, bet paprastai ne. Jie sutelkia dėmesį į modelio ir jo santykių generavimą vienu metu.
Sėjamieji dažnai apvynioja dideles duomenų populiacijos sekas duomenų bazės operacijose, kad užtikrintų, jog visa sėjos operacija pavyksta arba nepavyksta, užkirsdami kelią daliniams ar sugadintam duomenims susijusiose lentelėse. Šis sandorio požiūris yra būtinas, kai sėjamieji valdo kelis tarpusavyje susijusius modelius ir ryšius.
Privalumai ir naudojimo atvejai
Scenarijams, kuriems reikalingas greitas ir izoliuotas bandymo duomenų generavimas, yra naudinga naudoti gamyklas, kad jie patys. Jie supaprastina susijusių modelių kūrimą be rankinės intervencijos, leisdami kūrėjams sutelkti dėmesį į testus, o ne rankinius duomenų sąranką.
Sėjamosioms teikiama pirmenybė aplinkos nustatymui, pradinėms duomenų populiacijai arba sudėtingiems sėjos scenarijams, kuriuose duomenų bazių populiacijos tvarka ir logika, įskaitant daugialypės priklausomybes nuo daugialypės priklausomybių ir verslo logikos atitikties. Sėjamieji remiasi gamyklomis ir tiesioginėmis duomenų bazių operacijomis, kad pateiktų visiškai paruoštą duomenų bazės būseną plėtrai ar pastatymui.
Praktinis pavyzdys
Apsvarstykite galimybę sukurti vartotojus ir jų įrašus:
- Naudodamiesi gamyklomis, vartotojų gamykloje galima apibrėžti ryšį, kad būtų automatiškai kurti įrašus, taigi, kai vartotojas sukuriamas per gamyklą, susiję įrašai sukuriami automatiškai.
- Su sėjtuvais sėjamasis pirmiausia sukuria vartotojus naudodamas vartotojų gamyklą. Tada atskirai jis naudoja įrašų fabriką, kad sukurtų žinutes, aiškiai susiedama juos su vartotojais kilpoje ar partijoje, užtikrindamas referencinį vientisumą.
Gamyklos sutelkia dėmesį į santykių logikos kapsuliavimą pačiame modelio kūrimo procese. Sėjamieji sutelkia dėmesį į orkestravimą ir užsakymą, kuris užtikrina nuoseklią bendrą duomenų bazės būseną.
Santrauka
Gamyklos tvarko ryšius, įterpdamos reliacinių kūrimo logiką gamyklos apibrėžimuose, įgalindamos automatinį, įdėtą susijusių modelių kūrimą. Jie skatina paprastumą ir pakartotinį naudojimą generuodami pavienius ar mažus susijusių modelių rinkinius, puikiai tinkančius bandymams ir greitai suklastoti duomenų generavimą.
Sėjamieji tvarko ryšius, organizuodami visų duomenų bazių populiacijos procesų tvarką ir srautą, užtikrindami, kad susiję modeliai būtų sukurti nuoseklia tvarka ir su galiojančiais užsienio raktais. Jie naudoja gamyklas kaip statybinius blokus, tačiau pratęsia atsakomybę už sudėtingų tarpmodelio priklausomybių, aplinkos duomenų ir operacijų nuoseklumo valdymą per visą sėjos operaciją.
Skirtumas slypi abstrakcijos lygyje: gamyklos sutelkia dėmesį į individualų modelį ir tiesioginį jo reliacinių duomenų generavimą, o sėjamieji koordinuoja visos duomenų bazės duomenų inicijavimą, valdymo modelio priklausomybes ir ryšius platesnėje srityje. Dėl šios priežasties gamyklos apibūdina ryšius deklaratyviai, o sėjamieji įgyvendina procedūrinę logiką, skirtą tų ryšių užcouravimui patikimai patikimai realioje duomenų bazės aplinkoje.