Żball TimeStamp tad-Duttrina: Importa tabelli SQL Server 2008
Kif timporta tabella SQL Server b'qasam Timestamp bid-Duttrina? Meta t-tutorials hawn u hemm ma jkunux biżżejjed, ħafna drabi jkun hemm mod wieħed biss biex tikseb l-għanijiet tiegħek... Maħmuġ idejk! Illum nipproponi soluzzjoni, li nittama li tkun integrata malajr mill-Komunità inkarigata mill-iżvilupp tad-Duttrina, li tippermetti li jinħolqu entitajiet Symfony2 minn database SQL Server li jkun fihom qasam tat-tip Timestamp.
X'inhu t-tip Timestamp?
Jidhirli meħtieġ li nispeċifika xi informazzjoni żgħira fuq it-tip Timestamp. M'iniex espert tal-MySQL, iżda minn informazzjoni li ltqajt ma', il-MySQL Timestamp tidher qisha data, li tagħmilha aktar faċli biex tikkonverti. Madankollu, l-istess tip għal SQL Server huwa ftit aktar sottili fil-fehim tiegħu. Id-dokumentazzjoni hija disponibbli fuq il-Microsoft Technet.
Tip ta' dejta li jesponi numri binarji b'karattru wieħed iġġenerati awtomatikament f'database.
Interessanti... U kif ngħid lil Dottrine biex ma tikkonvertix? Nipproponi soluzzjoni biex niddevja l-problema...
Sib soluzzjoni "personalizzata".
Diġà nista' nara l-messaġġi ġejjin jgħiduli li diġà hemm metodu lest li jaħdem. IVA! Barra minn hekk, huwa dan il-kompitu Symfony2 li jista' jissejjaħ b'dan il-mod:
php app/console duttrina:mapping:importazzjoni
Dan il-kompitu jaħdem tajjeb, iżda kif qrajt hawn, Doctrine taħdem għal madwar 70-80% tal-mappings possibbli fuq database. Fil-każ tiegħi, ridt nesporta l-immappjar ta 'tabella SQL Server (2008), li kien fiha qasam TimeStamp famuż. U fl-20% li jifdal tal-mappings, hemm preċiżament dawn it-tipi ta 'oqsma.
Se nmexxi l-kmand u nipprova nimporta l-mappaqe.
|
|
Fil-każ tiegħi, kelli nuża żewġ għażliet addizzjonali, jiġifieri:
- –em=”…” biex tispeċifika l-Maniġer tal-Entità inkarigat mid-database tiegħi SQL Server;
- --filter="tabella". Ridt nuża din l-għażla li ħadmet ma 'MariaDB iżda dehret li ġiet injorata meta użata ma' MSSQL. Dan jippermettilek li tispeċifika tabella biex tesporta. Fil-każ tiegħi, kont ikkupjajt il-BDD tiegħi, kont ħassejt it-tabelli li ma kinux jinteressawni u ħloqt profil ġdid ta'Maniġer tal-Entità.
U hawnhekk hija l-eċċezzjoni mqajma:
|
|
Minn issa 'l quddiem, ser ikollna ntellgħu d-dadi.
It-tip Timestamp mhuwiex appoġġjat - u nammetti li ma nafx verament ma' liema tip ta' oqsma PHP nassoċjawh - se ngħidu temporanjament lil Doctrine li dan it-tip irid jiġi kkonvertit datatime.
- Mur fil-folder indikat mill-istruttura tas-siġra, vendordoctrinedbalibDoctrineDBALPlatforms.
- F'dan il-folder hemm il-klassijiet li jappoġġjaw il-maġġoranza tad-DBMS eżistenti.
- Fil-każ tiegħi kont qed naħdem fuq SQL Server 2008 R2, għalhekk neditja l-fajl SQLServer2008Platform.php, iżda tħossok liberu li teditja fajl ieħor jekk jaqbel mal-konfigurazzjoni tiegħek.
- Aħna se neditjaw il-metodu initializeDoctrineTypeMappings. Fil-varjabbli doctrineTypeMapping hija preżenti l-informazzjoni biex tikkonverti t-tipi. Żid il-linja:
$this->doctrineTypeMapping['timestamp'] = 'datatime'; - Ibda mill-ġdid l-importazzjoni tal-mapping. L-immappjar tal-oqsma kollha ġew importati.
- Trid tiftakar li tneħħi l-linja li żidt mal-fajl. Jekk m'intix ċert, neħħi l-bejjiegħa kollha u erġa' installahom.
- Issa mur suċċessivament għall-fajls li ġew iġġenerati. Il-mogħdija ta 'kull wieħed hija indikata, u mbagħad, segwi l-indikazzjonijiet hawn taħt.
- Issa għandek l-ekwivalenti tat-tabelli tiegħek f'XML.
- Ħassar il-linji li jikkorrispondu għal qasam tat-tip TimeStamp. B'dan il-mod, id-Duttrina se tinjora dawn l-oqsma.
- Prekawzjoni żgħira b'SQL Server hija li żżid parentesi kwadri madwar kull valur li jinsab minn "kolonna" li jkollha spazju wieħed jew aktar.
Għal din il-linja,
Il-kolonna SQL Server hija "L-Informazzjonijiet Tiegħi". Id-duttrina ma tafx kif timmaniġġja l-ispazji b'MSSQL. Allura għandek bżonn iżżid ganċijiet bħal dan:
- Meta l-fajls tiegħek ikunu ġew ikkoreġuti, inniedu l-ġenerazzjoni tal-entità.
1php app/console dottrine:mapping:konverti annotazzjoni ./src
Jista 'jkollok bżonn tispeċifika l-Maniġer tal-Entità li tuża, bħal dan: –em=”…”.
- Issa tista’ tħassar l-immappjar, jiġifieri l-fajls .xml preżenti fir-Riżorsi.
Dak hu, issa għandek entitajiet validi ġġenerati mid-Duttrina. Din is-soluzzjoni xi ftit ... "brian fuck" hija valida sakemm it-tim responsabbli għall-iżvilupp tad-Duttrina ma jkunx integrat soluzzjoni vijabbli li tippermetti li t-tip TimeStamp jiġi appoġġjat b'mod nattiv fi ħdan PHP.
Xorti tajba u narak dalwaqt!