Utilizați activerecord în yii2

Utilizați activerecord în yii2
Ce veți crea

În această serie de articole despre programare în Yii2, le spun cititorilor noștri cum să utilizeze cadrul Yii2 pentru PHP. În tutorialul de astăzi, vă voi spune despre cartografia obiect-relațională din Yii, cunoscută sub numele de ORM, pentru lucrul cu bazele de date. Acest șablon se numește Active Record și este un aspect cheie al programării aplicațiilor bazei de date în Yii.







Yii oferă diverse modalități de programare a bazei dvs. de date, cum ar fi interogări directe și constructor de interogări. dar utilizarea Active Record oferă un set complet de beneficii pentru programarea bazelor de date orientate obiect. Lucrarea dvs. devine mai eficientă, mai sigură, funcționează în contextul arhitecturii MVC și este portabilă dacă decideți să schimbați platforma bazei de date (de exemplu, MySQL în PostgreSQL).

Urmați-mă și voi vorbi în detaliu despre fundamentele Active Record din Yii.

Vă reamintesc că particip în mod activ la discuțiile de mai jos. Sunt interesat în special dacă aveți abordări diferite, idei suplimentare sau doriți să sugerați subiecte pentru lecții viitoare. Dacă aveți o întrebare sau o sugestie, vă rugăm să trimiteți un mesaj de mai jos. De asemenea, puteți să mă contactați direct la Twitter @reifman.

Ce este o înregistrare activă?

Clasa Active Record este asociată cu o tabelă de baze de date, înregistrarea activă corespunde rândului din această tabelă, iar atributul Active Record instance reprezintă valoarea unei anumite coloane din rândul respectiv. În loc să scrieți interogări SQL simple, puteți accesa atributele Active Record și puteți apela metodele Active Record pentru a accesa și a gestiona datele stocate în tabelele bazei de date.

Integrarea modelului Active Record în Yii este o parte puternică a cadrului, însă este comună celor mai multe alte cadre, cum ar fi Ruby on Rails.

Această abstractizare de la modele la tabele de baze de date permite cadrului să desfășoare activități de securitate grele, inclusiv protecția împotriva injecțiilor SQL.

Înregistrare activă în Yii sprijină, de asemenea, portabilitatea în multe baze de date. Puteți comuta între baze de date fără a trebui să vă modificați codul:

Și următoarele baze de date NoSQL:

  • Redis 2.6.12 sau mai recent: prin yii \ redis \ ActiveRecord. necesită extensia yii2-redis
  • MongoDB 1.3.0 sau mai recent: prin yii \ mongodb \ ActiveRecord. necesită extindere yii2-mongodb

Învățați elementele de bază

În acest episod, mă voi concentra mai mult pe utilizarea Active Record în codul dvs.

În primul rând, permiteți-mi să mă gândesc cum să convertesc modelul Yii pentru a utiliza înregistrarea activă. Voi folosi exemplul modelului pe care l-am creat în seria "Creați propria noastră pornire". Această serie vă va arăta cum am creat de la zero startup-ul meu, Planificatorul întâlnirilor. în Yii2.







Utilizați activerecord în yii2

Utilizarea funcției Active Record în model este destul de simplă; Rețineți că lansarea de clasă extinde \ yii \ db \ ActiveRecord:

Crearea interogărilor

Să ne uităm la unele interogări comune de înregistrare activă.

Intrări individuale

Dacă aveți un ID de înregistrare, pe care îl obținem adesea de la parametrul de interogare din controler, va fi destul de ușor să găsiți înregistrarea necesară:

De asemenea, puteți extinde -> în cazul în care matricea are mai multe câmpuri sau condiții booleene:

Intrări multiple

Iată un exemplu de găsire a tuturor înregistrărilor care se potrivesc cu un anumit statut. sortat după $ id:

Metodă -> toate (); selectează toate înregistrările, nu doar una. Variabila $ people returnează o serie de obiecte model. În caz contrar, când nu există condiții, puteți accesa toate înregistrările utilizând -> findAll ();

Returnează un tablou

Utilizarea indexBy returnează o serie de elemente indexate după id:

Alternativ, puteți returna o matrice asociativă cu -> asArray ():

Notă. Documentația Yii spune: "Deși această metodă economisește memorie și îmbunătățește performanța, este situată mai aproape de cel mai scăzut nivel al abstractizării bazei de date și pierdeți majoritatea funcțiilor Active Record".

Numărătoare de înregistrări

De asemenea, puteți returna numai înregistrările de numărare din interogare:

Pentru a calcula statistici, folosesc multe valori în Schedulerul întâlnirilor; aflați mai multe în episodul nostru despre Tabloul de bord:

Accesul la date

Când solicitați date, cum ar fi un singur model, este ușor să accesați datele ca un obiect model:

Eu deseori procesez array-uri în felul următor:

Alocarea maselor

De asemenea, puteți atribui rapid o matrice unei înregistrări de model folosind ActiveRecord:

Sau puteți folosi -> load () pentru aceasta:

Generatorul de coduri Yii Gii este foarte bun pentru crearea de modele folosind ActiveRecord, care poate genera o mulțime de cod util, cum ar fi modele, controale, formulare, afișare etc.

Salvarea datelor

După cum puteți vedea mai sus, salvarea datelor în Active Record este, de asemenea, ușoară. În acest exemplu, se creează și se salvează o nouă înregistrare din documentația Yii, apoi înregistrarea este încărcată de ID, iar actualizările sunt salvate:

Ștergerea înregistrărilor

Ștergerea unei intrări este și mai ușoară:

Actualizarea contoarelor

Yii oferă, de asemenea, creșteri convenabile ale contorului. Să presupunem că un utilizator planifică o altă întâlnire și eu urmăresc numărul lor în tabelul de utilizatori:

Legarea tabelelor la indexuri este una dintre cele mai puternice caracteristici ale Active Record. De exemplu, în Planner Meeting, fiecare întâlnire poate avea 0 sau mai multe MeetingPlaces. Modelul Meeting.php definește o relativă ActiveQuery pentru aceasta:

Apoi, pot accesa toate locațiile utilizând proprietatea $ meetingPlaces. Mai jos, încarc o colecție și un fel de sortare prin toate plăcile sale de întâlniri destul de ușor, ca și cum ar fi o serie de sub-obiecte încorporate:

Desigur, totul depinde de crearea unei chei străine atunci când se creează un tabel în migrația sa:

Ce urmează

Sper că aveți o idee simplă despre popularitatea uimitoare a înregistrărilor Active. Acestea includ cicluri de viață, tranzacții și blocări, pe care le pot scrie în viitor. Dacă doriți să faceți un pas înainte, Yii2 oferă două zone mari pentru studiu mai detaliat în documentația dvs.: Yii2 Active Record Guide și Yii2 Active Record Functional Specifications. Acestea sunt articole bine scrise.

Urmăriți lecțiile viitoare din seria Programming on Yii2. unde vom continua să ne aruncăm în diferite aspecte ale cadrului. De asemenea, puteți vedea articolul menționat mai sus "Crearea inițierii pe PHP".

Dacă doriți să știți când apare următorul tutorial pe Yii2, urmați-mă @reifman pe Twitter sau vizitați pagina mea de instructor.

Link-uri conexe







Articole similare

Trimiteți-le prietenilor: