Gabim i vulës kohore të doktrinës: Importo tabelat e SQL Server 2008
Ueb agjenci » Lajme dixhitale » Gabim i vulës kohore të doktrinës: Importo tabelat e SQL Server 2008

Gabim i vulës kohore të doktrinës: Importo tabelat e SQL Server 2008

Si të importoni një tabelë të SQL Server me një fushë Timestamp me doktrinën? Kur mësimet këtu dhe atje nuk janë të mjaftueshme, shpesh ekziston vetëm një mënyrë për të arritur qëllimet tuaja... Lyejini duart tuaja! Sot unë propozoj një zgjidhje, e cila shpresoj se do të integrohet shpejt nga Komuniteti përgjegjës për zhvillimin e Doktrinës, e cila lejon krijimin e entiteteve Symfony2 nga një bazë të dhënash SQL Server që përmbajnë një fushë të tipit Timestamp.

Cili është lloji i vulës kohore?

Më duket e nevojshme të specifikoj disa informacione të vogla mbi llojin e vulës kohore. Unë nuk jam ekspert i MySQL, por nga informacionet që kam hasur, vula kohore e MySQL duket si një datë, gjë që e bën më të lehtë konvertimin. Sidoqoftë, i njëjti lloj për SQL Server është pak më delikat në kuptimin e tij. Dokumentacioni është i disponueshëm në Microsoft Technet.

Një lloj i të dhënave që ekspozon numrat binar me një karakter të gjeneruar automatikisht në një bazë të dhënash.
Interesante… Dhe si t'i them Doktrinës të mos më kthejë në besim? Unë propozoj një zgjidhje për të devijuar problemin ...

Gjeni një zgjidhje "me porosi".

Unë tashmë mund të shoh mesazhet që vijnë duke më thënë se tashmë ekziston një metodë e gatshme që funksionon. PO ! Për më tepër, është kjo detyrë Symfony2 që mund të thirret në këtë mënyrë:

php app/console doktrina:mapping:import
Kjo detyrë funksionon mirë, por siç lexova këtu, Doktrina funksionon për rreth 70-80% të hartave të mundshme në një bazë të dhënash. Në rastin tim, doja të eksportoja hartëzimin e një tabele SQL Server (2008), e cila përmbante një fushë të famshme TimeStamp. Dhe në 20% të mbetur të hartave, ka pikërisht këto lloj fushash.

Unë do të ekzekutoj komandën dhe do të përpiqem të importoj mappaqe.

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

Në rastin tim, më duhej të përdorja dy opsione shtesë, domethënë:

  1. –em=”…” për të specifikuarMenaxher i entitetit përgjegjës për bazën time të të dhënave SQL Server;
  2. --filter=”tabela”. Doja të përdorja këtë opsion që funksiononte me MariaDB, por dukej se ishte injoruar kur përdorej me MSSQL. Kjo ju lejon të specifikoni një tabelë për eksport. Në rastin tim, unë kisha kopjuar BDD-në time, kisha fshirë tabelat që nuk më interesonin dhe krijova një profil të ri tëMenaxher i entitetit.
    Dhe këtu është bërë përjashtimi:
1
2
[Doktrina DBALDBALEPërjashtim]
Baza e të dhënave e panjohur lloj vula kohore e kërkuar, DoctrineDBALPlatformsSQLServer2008Platforma mund të mos e mbështesë atë.

Që tani e tutje, do të na duhet të manipulojmë zaret.
Lloji i vulës kohore nuk mbështetet - dhe e pranoj se nuk e di vërtet se me çfarë lloji të fushave PHP ta lidhim - ne do t'i themi përkohësisht Doktrinës se ky lloj duhet të konvertohet koha e të dhënave.

  • Shkoni te dosja e treguar nga struktura e pemës, vendordoctrinedbalibDoktrinaDBALPlatformat.
  • Në këtë dosje janë klasat për të mbështetur shumicën e DBMS ekzistuese.
  • Në rastin tim unë isha duke punuar në SQL Server 2008 R2, kështu që unë redaktoj skedarin SQLServer2008Platform.php, por mos ngurroni të redaktoni një skedar tjetër nëse përputhet me konfigurimin tuaj.
  • Ne do të modifikojmë metodën inicializeDoctrineTypeMappings. Në variabël doktrinëTypeMapping është i pranishëm informacioni për konvertimin e llojeve. Shtoni rreshtin:
    $this->doctrineTypeMapping['timestamp'] = 'koha e datës';
  • Rinis importin e hartës. Hartat e të gjitha fushave janë importuar.
  • Duhet të mbani mend të hiqni rreshtin që keni shtuar në skedar. Nëse nuk jeni të sigurt, hiqni të gjithë shitësit dhe riinstaloni ato.
  • Tani shkoni me radhë te skedarët që janë krijuar. Tregohet shtegu i secilit, dhe nga ana tjetër, ndiqni indikacionet më poshtë.
    • Tani keni ekuivalentin e tabelave tuaja në XML.
    • Fshini linjat që korrespondojnë me një fushë të tipit Time Stamp. Në këtë mënyrë, Doktrina do t'i injorojë këto fusha.
    • Një masë e vogël paraprake me SQL Server është shtimi i kllapave katrore rreth çdo vlere që përmban "kolona" që ka një ose më shumë hapësira.
      Për këtë linjë,

      Kolona SQL Server është "Infot e mia". Doktrina nuk di se si të trajtojë hapësirat me MSSQL. Kështu që ju duhet të shtoni grepa si kjo:
  • Kur skedarët tuaj të jenë korrigjuar, ne nisim gjenerimin e njësive.
    1
    php app/console doktrina:mapping:convert annotation ./src

Mund t'ju duhet të specifikoni Menaxherin e Entitetit për t'u përdorur, si kjo: –em=”…”.

  • Tani mund të fshini hartën, d.m.th. skedarët .xml të pranishëm në Burimet.
    Kjo është e gjitha, ju tani keni entitete të vlefshme të krijuara nga Doktrina. Kjo zgjidhje pak… “brian dreq” është e vlefshme për sa kohë që ekipi përgjegjës për zhvillimin e Doktrinës nuk ka integruar një zgjidhje të zbatueshme që do të lejonte që tipi TimeStamp të mbështetet në mënyrë origjinale brenda PHP.

Fat të mirë dhe shihemi së shpejti!

★ ★ ★ ★ ★