KT CRUD

Při rozsáhlejších projektech je a pravděpodobně vždy bude potřeba rozšířit typy obsahu WordPressu o nějaké vlastní. Nemyslím tím jenom custom post_type – ale udělat například i databázový model. Poté je potřeba také tato data nějak z databáze číst, mazat, ukládat a přidávat. Pro tento účel vznikl abstraktní objekt KT CRUD (Create, Read, Update, Delete).

Související komponenty

  1. KT CRUD Column
  2. KT CRUD Admin List
  3. KT CRUD Admin Column

Logika práce s objektem

  1. Jedna tabulka v databázi odpovídá vždy jednomu CRUD Modelu.
  2. Nikdy nepoužíváme KT CRUD – vždy je nutné připravit vlastní objekt, který KT CRUD dědí.
  3. V nově založeném modelu je potřeba vydefinovat několik konstant.
  4. V našem modelu je potřeba definovat a inicializovat sadu sloupců – pokud to nedělá mateřský objekt za nás.

Nezapomeňte, že se jedná o model – jeho umístění bude tedy v příslušné složce: …/yours/models/kt_wp_fw_crud_model.inc.php

Jak bude vypadat základní model

V rámci nového modelu je důležité vždy definovat několik konstant:

  • TABLE Název tabulky, se kterou bude model při operacích komunikovat.
  • PREFIX – Prefix se používá jako identifikace modelu – pro slug stránky, indentifikace modelu, atd.
  • FORM_PREFIX – často používán jako prefix POSTu pro odeslání dat modelu.

Těchto několik konstant doporučujeme vždy definovat. Pokud je nevyplníte, nic se nestane. Budete ale poté odkázání vždy na string pro dané údaje, což je nepraktické a do budoucna velmi neefektivní.

Definice sloupců modelu

Každý model, který dětí svou základní strukturu z KT CRUD musí mít zavedenou abstraktní metodu initColumns() která zajišťuje nastavení všech sloupců, s kterými bude model pracovat.

addColumn($name, $type = KT_CRUD_Column::TEXT, $nullable = false)

Přidá do kolekce sloupců modelu nový model

  1. $name – název sloupce v databází.
  2. $type – datový typ vycházející z konstanty na KT CRUD Column.
  3. $nullable – určuje, zda se může sloupec uložit jako NULL.

Tímto způsobem je nutné přidat všechny sloupce, s kterými bude KT CRUD model dále pracovat – vše se zavádí v rámci abstraktní metody initColumns().

getColumnByName($name)

Pokud potřebujeme po definici sloupců získat instanci daného sloupce, můžeme využít tuto funkci.

Inicializace modelu

V rámci CRUD modelů je možné využívat dva „typy“ inicializace modelu.

  1. Volám nový model a nevyužívám žádný parametr v konstruktoru.
  2. Jako parametr konstruktoru předávám ID záznamu v tabulce, se kterým chci pracovat.

Základní operace s modelem

saveRow()

Funkce sama rozpozná, zda se má provést UPDATE nebo INSERT záznamu na základě toho, zda byla data modelu načtena z DB nebo se jedná o nový model bez existujícího ID.

 deleteRow()

Provede DELETE daného záznamu, který byl načten z DB. Pokud záznam neexistuje, neprovede se žádná operace.

hasError()

Vrátí logickou hodnotu na základě toho, zda model při komunikaci s DB obdržel nějakou chybu a operace se neprovedla.

Funkce pro manipulaci dat

Model obsahuje základní sadu funkcí, kterou je možné využívat pro manipulaci, přidávání a změnu dat daného modelu.

addNewColumnValue( $name, $value = null )

Přidá hodnotu na název daného sloupce.

addNewColumnsToValue( array $columns )

Přidá hodnoty na příslušné sloupce. Pole je zadáváno ve tvaru $columnName => $columnValue. U funkce je důležité, že provádí merge dat. Můžete pomocí funkce přidávat části dat po částech bez toho, že byste přepsali již naplněná data. Dochází však k přepisu jednotlivých hodnot sloupců!

 setData( array $data = array() )

Nastaví a přemaže všechna existující data daty novými – například i prázdným polem pro smazání všech údajů sloupců. Zde již neprobíhá merge dat, ale „tvrdý“ set jiné hodnoty.

getColumnValue($column)

Vrátí hodnotu na daném názvu sloupce

getData()

Vrátí pole se všemi sloupci a hodnotami, které jsou v modelu nastaveny. V podobě $columnName => $columnValue.

Ostatní funkce

isInDatabase()

Po načtení modelu pomocí ID záznamu v inicializaci vrátí, zda záznam v DB skutečně existoval.

Ukázkový příklad modelu

Pro náš definovaný model by nám měla chybět ještě základní sada getterů a setterů pro získání jednotlivých dat. Můžeme využívat připravené funkce KT CRUD, ale pohodlnější, čistější a správné je, si jednotlivé „sloupce“ připravit ještě na modelu samotném.

Jistě si všimnete, že nemáme getter a setter pro ID samotné. To definovat není potřeba, protože v konstruktoru jsme definovali primární název sloupce. CRUD vždy počítá alespoň s jedním sloupcem a proto má getId() a setId() připravené defaultně a odkazuje se na název právě privátního názvu sloupce.



Odebírejte novinky z FW

Sledujte nás!

Tyto stránky využívají Cookies. Používáním těchto stránek vyjadřujete souhlas s používáním Cookies.Zjistit víceOK, rozumím