Az aktivitechort használja a yii2-ben

Az aktivitechort használja a yii2-ben
Mit fogsz létrehozni?

A Yii2 programozásról szóló cikkek sorozatában elmondom az olvasóknak, hogyan kell használni a Yii2 keretrendszert a PHP-hez. A mai bemutatóban elmondom Önnek az Yii-ban (az ORM néven ismert) objektum-relációs leképezést az adatbázisok kezelésére. Ezt a sablont Active Record-nek nevezik, és a Yii-ban lévő adatbázis-alkalmazások programozásának egyik kulcsfontosságú eleme.

A Yii számos módot kínál arra, hogy programozottan dolgozhasson az adatbázisával, például a közvetlen lekérdezésekkel és a lekérdezés-készítővel. de az Active Record segítségével az objektumorientált adatbázis-programozás teljes körű előnyökkel jár. Az Ön munkája hatékonyabbá, biztonságosabbá válik, az MVC architektúrájának kontextusában működik és hordozható, ha úgy dönt, megváltoztatja az adatbázisplatformot (például a MySQL-t a PostgreSQL-hez).

Kövessen velem, és részletesen beszélek az Active Record Yii alapjairól.

Emlékeztetem Önöket, hogy aktívan részt veszek az alábbi megbeszéléseken. Különösen érdekel, hogy vannak-e különböző megközelítések, további ötletek, vagy szeretnél javaslatokat tenni a jövőbeli leckékre. Ha kérdése vagy javaslata van, kérjük, küldje el az alábbi üzenetet. Vegye fel velem a kapcsolatot közvetlenül a Twitter @reifman-on.

Mi az aktív rekord?

Az Active Record osztály egy adatbázistáblához társul, az Aktív rekord megfelel ennek a táblázatnak a sorában, és az Active Record példány attribútuma egy adott oszlop értékét jeleníti meg a sorban. Ahelyett, hogy tiszta SQL lekérdezéseket írnának, az Active Record attribútumokat elérheti és az aktív rekord módokat hívhatja az adatbázis táblákban tárolt adatokhoz való hozzáféréshez és azok kezeléséhez.

Az Active Record minta Yii-ban történő integrálása a keret egyik erős oldala, de a legtöbb egyéb keretben, például a Ruby on Rails-ban.

Ez a modellekből az adatbázis-táblákba való absztrakció lehetővé teszi a keret számára a nagy biztonságú munkát, beleértve az SQL injekciók elleni védelmet is.

Az Active Record az Yii-ben is támogatja a hordozhatóságot számos adatbázisban. Az adatbázisok közötti váltás a kód megváltoztatása nélkül:

És a következő NoSQL adatbázisok:

  • Redis 2.6.12 vagy újabb verzió: yii \ redis \ ActiveRecord segítségével. kiterjeszti a yii2-redis kiterjesztést
  • MongoDB 1.3.0 vagy újabb verzió: yii \ mongodb \ ActiveRecord segítségével. kiterjeszti a yii2-mongodb kiterjesztést

Alapismeretek elsajátítása

Ebben az epizódban többet fogok koncentrálni az Active Record használatára a kódban.

Először is hadd mérlegeljem, hogyan lehet átalakítani a Yii modellt az Active Record használatával. A "Mi létrehozzuk saját indításunk" sorozatban a modell példáját fogom használni. Ez a sorozat megmutatja neked, hogy a semmiből hogyan hozhatom létre az indítómotoromat, a Találkozó Tervezőt. a Yii2-ben.

Az aktivitechort használja a yii2-ben

Az Active Record használata a modellben meglehetősen egyszerű; Ne feledje, hogy a Launch osztály kiterjeszti \ yii \ db \ ActiveRecord:

Lekérdezések létrehozása

Nézzünk néhány közös Active Record lekérdezést.

Egyéni bejegyzések

Ha rendelkezik rekordazonosítóval, amelyet gyakran kapunk a lekérdezési paraméterből a vezérlőben, elég könnyű megtalálni a szükséges rekordot:

Bővíthet -> ahol a tömb több mezővel vagy logikai feltételekkel rendelkezik:

Több bejegyzés

Íme egy példa arra, hogy megtaláljuk az adott státusznak megfelelő összes rekordot. rendezve: $ id:

Módszer -> all (); kiválasztja az összes rekordot, nem csak egy. Az $ people változó visszatér a modellobjektumok tömbjéhez. Ellenkező esetben, ha nincsenek feltételek, akkor a -> findAll () segítségével elérheti az összes rekordot;

Táblázat visszatérése

Az indexBy használatával az id által indexelt elemek tömbje visszatér:

Alternatív megoldásként visszaküldhet egy asszociatív tömböt -> asArray ():

Megjegyzés. A Yii-dokumentáció szerint: "Bár ez a módszer memóriát takarít meg és javítja a teljesítményt, az az adatbázis-absztrakció legalacsonyabb szintjéhez közelebb van, és elveszítené az Active Record funkciók nagy részét."

Rekordok számlálása

A lekérdezésből csak számlálási adatokat lehet visszaadni:

A statisztikák kiszámításához számos értéket használok az értekezlet-ütemezőben; többet tudhat meg az irányítópultról szóló epizódunkban:

Hozzáférés az adatokhoz

Ha adatokat szeretne kérni, például egyetlen modellt, akkor könnyen hozzáférhet adatként modell objektumként:

Gyakran dolgozom a tömbök így:

Tömegosztás

Az ActiveRecord használatával is gyorsan hozzárendelhet egy tömböt egy modellrekordhoz:

Vagy használhatja a -> load () -ot ehhez:

Az Yii Gii kódgenerátor kiválóan alkalmas az ActiveRecord használatával létrehozott modellek létrehozására, amelyek sok hasznos kódot generálhatnak, például modelleket, vezérlőket, formákat, megjelenítőket stb.

Adatok mentése

Amint fent láthatja, az adatok mentése az Active Record-ba is egyszerű. Ebben a példában egy új rekord jön létre és menthető a Yii dokumentációból, majd a rekordot az azonosító tölti be, és a frissítések mentésre kerül:

Rekordok törlése

Egy bejegyzés törlése még könnyebb:

A számlálók frissítése

A Yii kényelmesen növeli a számlálót is. Tegyük fel, hogy a felhasználó újabb találkozót tervez, és nyomon követik számukat a felhasználói táblázatban:

Az indexekhez való kapcsolódás az Active Record egyik legerősebb jellemzője. Például a Tervezői Találkozóban minden ülés 0 vagy több MeetingPlaces lehet. A Meeting.php modell relációs ActiveQuery-t határoz meg ehhez:

Ezután elérhetem az összes helyszínt a $ meetingPlaces tulajdonság használatával. Az alábbiakban egy gyűjteményt töltek be, és rendezem az egész gyűlésen összegyűlt könyvet, eléggé egyszerűen, mintha egy beépített tömb lenne az alépítményekkel:

Természetesen mindentől függ, hogy létrehoz egy idegen kulcsot, mikor létrehoz egy táblát a migráció során:

Mi a következő

Remélem, egyszerű ötleted van az Active Records csodálatos népszerűségéről. Ez magában foglalja az életciklusokat, a tranzakciókat és a lezárást is, amelyeket a jövőben írhatok. Ha előrelépést szeretne tenni, a Yii2 két nagy területet kínál a részletesebb tanulmányozáshoz a dokumentációban: Yii2 Active Record Guide és Yii2 Active Record Functional Specifications. Ezek jól megírt cikkek.

Tartsa szemmel a Yii2 programozási sorozat következő leckéit. ahol továbbra is merülünk a keret különböző aspektusaiba. Láthatja a fent említett cikket is: "Indítás indítása PHP-ben".

Ha szeretné megtudni, hogy mikor jelenik meg a következő bemutató a Yii2-en, kövesd @reifman-et a Twitteren vagy nézd meg oktatói oldaladat.

Kapcsolódó hivatkozások

Kapcsolódó cikkek