Lucrul cu doctrina în cadrul Symfony

Deci, noi știm deja în teorie (aici pentru a citi), care Doctrina. ceea ce oferă avantaje în comparație cu „goale“ interogări sql. Acum, du-te pentru a practica.

După cum deja informat în lecția precedentă, cel mai simplu mod - de a crea ORM bazat pe o bază de date existentă. Veți avea nevoie de doar două comenzi:

Astfel, vom crea o configurație pentru a construi modelul. Formatul poate fi diferit, de exemplu, YML, XML, etc. După aceea a crea ORM:

La crearea ORM poate fi considerată finalizată. La ce se întâmplă dacă mesele sunt legate, toate comunicările necesare au fost imediat stabilite în model. Puteți începe cu baza de date.

Notă. Ca urmare, prima comandă creează configurația bazei de date (implicit în src / Path_to_bundle / Resurse / config / doctrina. Uneori, trebuie să-l modificați, de exemplu, pentru a putea seta valorile implicite ale acestui într-una din următoarele note.

A doua clase generatoare de comandă așa-numitele cartografiere. împreună cu așa-numitul și metode get Normalizatorii. (În mod implicit, în src / Path_to_bundle / Entitate). Aceste clase și există o reprezentare a tabelelor bazei de date.

Dacă nu aveți baze de date gata făcute și doriți să creați, apel

Ștergerea DB poate comanda

Acest lucru va aduce un generator interactiv. Urmând instrucțiunile lui, creați un model (cartografiere). Puteți crea un tabel în baza de date, pe baza acestui model. După finalizarea lucrărilor, cu un generator interactiv, de a crea un model, așa cum am scris înainte

Creați un tabel în baza de date, folosind maparea:

Mai departe în mod direct pentru a lucra cu baza de date folosind Doctrină. Această notă este o introducere, astfel încât în ​​timp ce vom face fără a solicita DQL.

Aka SELECT Pentru a face o simplă mostră din același tabel de baze de date, suficient pentru a scrie în controler:

găsi ($ id) metoda face selecția prin ID-ul (cu cheia primară). În plus, există metode

findall () - obține toate înregistrările din tabel,

findBy (array ( 'camp' => 'value')) - eșantion cu o condiție, de exemplu,

// Această matrice de sortare ( 'preț' => 'ASC'));

După cum probabil ați ghicit, tipul de produse $ - acesta este modelul nostru generat (cartografiere). (Ce în src / Path_to_bundle / Entitate)

Aka INSERT / UPDATE Foarte convenabil faptul că, folosind diferența Doctrină între adăugarea de intrări și să actualizeze minim existent. Totul depinde de ce fel de obiect pe care actualizați - cea pentru care a fost făcut de mai sus SELECT. sau nu.

Începeți prin adăugarea (INSERT) în baza de date:

// Creați o instanță a modelului de produs $ = produs nou;

// setează valoarea câmpului $ produs-> SetValue ( 'valoare');.

// atribuit unui manager obiect model de $ Molodva> persistă ($ produs)

// Adăugați înregistrarea la masa de $ Molodva> flush ();

Actualizare (UPDATE) este caracterizat prin aceea că este necesar să se selecteze mai întâi intrarea pentru actualizare. Și totuși!

// Selectați o intrare pentru actualizare - în această linie toate $ produsul diferența = $ Molodva> getRepository ( 'AcmeStoreBundle: Produs') - gt; găsi ($ id);

// setează valoarea câmpului $ produs-> SetValue ( 'valoare');.

// atribuit unui manager obiect model de $ Molodva> persistă ($ produs)

// Adăugați înregistrarea la masa de $ Molodva> flush ();

Pentru îndepărtarea, aveți nevoie doar de a apela Remove () în loc de persistă ():

Pe aceasta de acum. Am învățat cum să realizați operații de bază cu baza de date în cadrul Symfony. folosind Doctrina.