Żball TimeStamp tad-Duttrina: Importa tabelli SQL Server 2008
Aġenzija tal-web » Aħbarijiet diġitali » Żball TimeStamp tad-Duttrina: Importa tabelli SQL Server 2008

Ż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.

1
php app/console doctrine:mapping:import —force NamespaceNameBundle xml

Fil-każ tiegħi, kelli nuża żewġ għażliet addizzjonali, jiġifieri:

  1. –em=”…” biex tispeċifika l-Maniġer tal-Entità inkarigat mid-database tiegħi SQL Server;
  2. --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:
1
2
[DuttrinaDBALDBALeċċezzjoni]
Database mhux magħrufa tip timestamp mitluba, DoctrineDBALPlatformsSQLServer2008Platform tista' ma tappoġġahx.

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à.
    1
    php 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!

★ ★ ★ ★ ★