exemplu Php doctrinei orm

În acest post, să ne ia în considerare un simplu exemplu de utilizare a ORM, și anume, Doctrina. Dacă cineva nu știe, ORM (Object-Relational Mapping, obiect-relaționale cartografiere) - este un astfel de lucru, care oferă cursuri de acces transparent la baza de date. Adevărul nu este în fiecare clasă, iar cele care reprezintă o descriere a modelului nostru de date. În general, aș avea un cuplu de ani în urmă pentru a afla despre un astfel de lucru, poate că nu am neglijat studiul php, și, în general, o mulțime de lucruri utile făcut: D. Dacă cineva familiarizat cu modele de design, se poate spune că doctrina corespunde modelului active record. Spre rușinea mea, eu nu sunt familiarizați cu ele, așa că nimic concret nu pot spune încă.

Apropo, ne-am atins deja pe scurt subiectul ORM, dar numai pentru piton. Puteti vedea despre SQLAlchemy aici.

În continuare va fi considerat un exemplu de modul de scriere în PHP folosind ORM Doctrina pentru a trimite mesaje private între utilizatori.

Pentru a începe pentru a defini masa noastră. Am decis să utilizeze doar o singură placă, iar pentru fiecare mesaj pentru a stoca doar o singură intrare în baza de date. Și astfel, câmpurile din tabel uita la mine așa:

  • id - ID-ul mesajului;
  • uid_from - ID-ul trimite utilizatorului;
  • uid_to - ID-ul destinatarului;
  • title - titlul de posturi;
  • Text - mesajul text;
  • flag_unread - steagul noului mesaj;
  • flag_del_from - semna mesajele trimise de la distanță;
  • flag_del_to - un semn al mesajelor primite de la distanță;
  • data - data expedierii în format unix-timestamp;

În această etapă a proiectului am ajuns. Acum, la partea tehnică a problemei.

Apoi setați o conexiune la baza de date, iar unii parametri (modul „leneș“ pentru a modela de încărcare, de validare a datelor, etc.). Ultima linie indică în cazul în care pentru a găsi modelele noastre Doctrină.

Acum, în directorul rădăcină de proiect, de a crea modele și PrivateMessage.php fișier. Rețineți că numele fișierului și clasă, care este descrisă în ea trebuie să fie aceeași. Iată cum mă uit la acest fișier:

Aici vom descrie câmpul id, deoarece Doctrina creează în mod automat, cu excepția cazului în care se prevede altfel cheie primară (cheie primară). De asemenea, în tabel nu specifică un index, care nu este bun. Ar fi frumos să-l facă să uid_from câmpuri și cel uid_to. Dar nu, pentru că leneș, într-un fel un alt timp ;-).

Următorul pas în crearea fișierului test.php proiect rădăcină, care vor fi principalele caracteristici pentru lucrul cu mesaje personale și un cod pentru a demonstra funcționalitatea. Iată conținutul acestui fișier:

$ Conn-> export-> exportClasses (array ( 'PrivateMessage')) - această linie va private_messaages de masă, dacă există încă. Așa că acesta poate fi mutat la script-ul de instalare, dar din moment ce nu avem acest lucru, atunci vom lăsa.

$ Curr_uid - această variabilă ar trebui să fie luate din sesiune. Așa cum ar trebui să fie numit în sesiune, nu știam de ce valoarea atribuită acestuia în codul 1.

GET_MESSAGE ($ id, $ uid) - returnează un $ id, $ uid este transferat la toate funcțiile pentru un mesaje de test de membru la utilizatorul curent. Încă o dată, identificatorul polzovatelya trebuie să fie luate din sesiune.

delete_messages ($ id-uri, $ uid) - $ - ID-uri de mesaje pe care o matrice id'shnikov pe care doriți să le ștergeți. Într-adevăr șterge înregistrările din baza de date, numai cei care au flag_del_from flag_del_to și sunt 0.

send_message ($ la, titlu $, $ text, $ uid) - $ la - ID-ul destinatarului, $ uid - expeditorul, ceilalți cred că este clar.

P.S. Aceasta este prima mea încercare de a face ceva cu ajutorul Doctrină.