24. června 2023
Laravel CRUD
Naučte se, jak implementovat základní operace pro správu dat – Create, Read, Update a Delete – ve frameworku Laravel a jak je efektivně propojit s databází a uživatelským rozhraním.
Co je CRUD?
CRUD je základním konceptem, který je nezbytný pro správu dat v jakékoli webové aplikaci. CRUD je akronym pro Create (Vytvořit), Read (Číst), Update (Aktualizovat) a Delete (Smazat). Tyto čtyři operace tvoří základní funkce, které jsou potřebné pro interakci s databází.
V Laravelu je práce s CRUD usnadněna díky jeho ORM (Object-Relational Mapping) nazývanému Eloquent. Eloquent umožňuje vývojářům pracovat s databázovými tabulkami jako s objekty a poskytuje jednoduché rozhraní (dalo by se říci API) pro běžné databázové operace.
Vytváření (Create) se v Laravelu provádí pomocí metody create(), která vytvoří nový záznam v databázi. Čtení (Read) se provádí pomocí metod jako get(), all(), find() apod., které načtou záznamy z databáze. Aktualizace (Update) se provádí pomocí metody update(), která upraví existující záznam v databázi. A nakonec, mazání (Delete) se provádí pomocí metody delete(), která odstraní záznam z databáze.
Úvod k naší ukázce
Představte si, že chceme vytvořit model ExampleItem, který bude obsahovat tyto atributy:
- title (string)
- body (string / text)
- is_active (boolean)
- type (string)
Předpokladem je mít nainstalovaný framework Laravel. Jelikož jsem testoval tento kód na již upravené aplikaci, navíc zde najdete lokalilizaci aplikace a omezení přístupu pouze uživateli s rolí superadmin.
Struktura souborů je přizpůsobena pro ukázku, tedy kromě názvu souborů uvádím i složku, ve které se daný soubor nachází. Nicméně použití je pouze na Vás, strukturu si můžete upravit dle svých potřeb.
V rámci testování je pak použit balíček Pest.
Vytvoření migrace
Migrace v Laravelu jsou jako verzovací systém pro vaši databázi. Umožňují vám měnit strukturu databáze pomocí PHP kódu místo ručního psaní SQL. Migrace jsou také skvělým nástrojem pro sdílení a aktualizaci databázové struktury mezi členy týmu.
Vytvoření migrace v Laravelu je jednoduché díky příkazu Artisan. Příkaz "php artisan make:migration" vytvoří nový soubor migrace v adresáři "database/migrations". Název souboru obsahuje datum a čas vytvoření, což Laravelu umožňuje určit, v jakém pořadí by měly být migrace spuštěny.
Každý soubor migrace obsahuje dvě metody: "up" a "down". Metoda "up" je použita k přidání nových tabulek, sloupců nebo indexů do vaší databáze. Metoda "down" by měla provést opačné operace k těm, které jsou provedeny v metodě "up".
Po vytvoření migrace můžete migraci spustit pomocí příkazu "php artisan migrate". Tento příkaz spustí všechny dosud nespustěné migrace v pořadí, v jakém byly vytvořeny.
Migrace (database/migrations):
[full migration PHP code as fetched above]Vytvoření modelu
Modely jsou jedním z klíčových aspektů frameworku. Jsou to reprezentace databázových tabulek a umožňují vám pracovat s databázovými záznamy jako s objekty. To znamená, že můžete provádět CRUD operace na svých modelech, aniž byste museli psát SQL.
Vytvoření modelu v Laravelu je jednoduché. Použijete Artisan příkaz "php artisan make:model", který vytvoří nový model v adresáři "app/Models". Název modelu by měl být v jednotném čísle a začínat velkým písmenem.
Každý model v Laravelu rozšiřuje třídu "Illuminate\\Database\\Eloquent\\Model" a obsahuje metody, které umožňují interakci s databází. Můžete také definovat vlastní metody a vlastnosti na svých modelech.
Modely také obsahují tzv. Eloquent vztahy, které umožňují definovat vztahy mezi různými modely. Například, pokud máte model "User" a model "Post", můžete definovat vztah, který říká, že jeden uživatel může mít mnoho příspěvků.
Model "ExampleItem" (app\\Models\\Examples):
[full model PHP code as fetched above]Vytváření akcí
V Laravelu můžete akce definovat jako samostatné třídy, které zastupují jednotlivé operace, které vaše aplikace může provést. Toto je alternativní přístup k tradičnímu modelu, kde jsou akce definovány jako metody v kontrolerech.
Vytvoření akce jako samostatného souboru v Laravelu je jednoduché. Nejprve musíte vytvořit novou třídu v adresáři "app/Actions". Třída například může mít metodu "execute()", která provede požadovanou operaci.
Tento přístup má několik výhod. Jedním z nich je, že vaše akce jsou dobře izolované, snadno rozšiřitelné a testovatelné. Každá akce má jasně definovanou odpovědnost a je snadné ji testovat nezávisle na ostatních částech vaší aplikace.
[CreateExampleItemAction, UpdateExampleItemAction, RemoveExampleItemAction code as fully fetched above]
Vytvoření Enum
Vytváření enumerátorů (Enums) v Laravelu je silný způsob, jak definovat typ proměnné, který umožňuje mnoho různých, ale specifických hodnot. Tato funkce je obzvláště užitečná, když chcete omezit možnosti hodnoty proměnné tak, aby obsahovala pouze hodnotu z konkrétní sady. V Laravelu nejsou enumerátory vestavěné, ale lze je snadno implementovat pomocí tříd PHP.
Vytváření enumerátorů v Laravelu může být skvělý způsob, jak zpřehlednit a udržovat váš kód, zejména při práci s proměnnými, které by měly mít pouze specifickou sadu hodnot. Mohou být použity v různých částech vaší aplikace Laravel, například v modelech, kontrolerech a dokonce i ve vašich databázových migracích.
Kromě toho, že váš kód je čistší a snadněji pochopitelný, enumerátory také pomáhají snižovat chyby ve vašem kódu. Omezením možných hodnot proměnné můžete zajistit, že bude vždy obsahovat hodnotu, kterou má, čímž se snižuje pravděpodobnost, že neočekávané hodnoty způsobí chyby ve vašem kódu.
Pamatujte, že enumerátory jsou jen jednou z mnoha pokročilých funkcí, které Laravel nabízí, aby usnadnil vaše vývojářské práce v PHP. Ať už vytváříte malý osobní projekt nebo velkou podnikovou aplikaci, Laravel má nástroje a funkce, které potřebujete k vytvoření robustních, škálovatelných a udržitelných PHP aplikací.
"ExampleItemType" Enum (app\\Enums\\Examples):
[full enum PHP code as fetched above]Vytvoření validace / validačních requestů
[Czech content as fully fetched above, including StoreExampleItemRequest and UpdateExampleItemRequest code]
Vytvoření kontroleru
[Czech content as fully fetched above, including full ExampleItemController code]
Vytvoření šablony
[Czech content as fully fetched above, including Index, Create, Edit, Show Blade template code]
Trasování (routing)
[Czech content as fully fetched above, including routing code]
Vytvoření továrny
[Czech content as fully fetched above, including ExampleItemFactory code]
Vytvoření testů
[Czech content as fully fetched above, including controller and action test code]
Závěr
V tomto návodu jsme se podrobně seznámili s procesem vytváření CRUD operací v Laravelu. Prošli jsme si všechny klíčové kroky, od vytváření migrací a modelů, přes definování akcí a validačních requestů, až po vytváření šablon, továren a testů. Doufám, že Vám tento návod pomohl pochopit, jak pracovat s Laravelem a že Vám poskytl pevný základ pro další vývoj Vašich vlastních aplikací.