Jednoduchý e-shop Laravel 5.3 část 1 – Instalace a databáze
- Jednoduchý e-shop Laravel 5.3 část 1 – Instalace a databáze
- Jednoduchý e-shop Laravel 5.3 část 2 – databáze seeder a homepage
- Jednoduchý e-shop Laravel 5.3 část 3 – košík a přidání zboží do něj
- Jednoduchý e-shop Laravel 5.3 část 4 – dokončení objednávky
- Jednoduchý e-shop Laravel 5.3 část 5 – odeslání mailu pro objednávku
- Jednoduchý e-shop Laravel 5.3 část 6 – základ administrační části
- Jednoduchý e-shop Laravel 5.3 část 7 – přehled objednávak v administraci
- Jednoduchý e-shop Laravel 5.3 část 8 – detail objednávky v administraci
- Jednoduchý e-shop Laravel 5.3 část 9 – editace produktů v administraci
- Jednoduchý e-shop Laravel 5.3 část 10 – přidání zboží do košíku AJAXEM
- Jednoduchý e-shop Laravel 5.3 část 11 – malé vylepšení modal okno pro přidání do košíku
Po krátké přestávce ( v mezidobí jsem pronikala do tajů záludného prgramovacího jazyka C) jsem se vrátila k mému původnímu e-shopu ( viz. seriál a drobný update). Jak už to tak bývá, zjistila jsem, že ne zrovna všechno v něm bylo ideální. Protože se blíží vánoce a kromě zaměstnání, úklidu domácnosti, pečení cukroví a nákupu dárků, nemám v podstatě nic na práci, rozhodla jsem se svůj nehezký kód přepracovat a to s využitím nejnovější verze Laravel framewroku a to konkrétně aktuální verze 5.3. Idea je stejná jako v minulém seriálu vytvořit jednoduchý, ale zároveň provozuschpný e-shop. Začínáme…
Nejprve instalace poslední verze Laravel
1 |
composer create-project laravel/laravel --prefer-dist shop |
Vytvoříme si databázi a v souboru .env si nastavíme vše potřebné, abychom se k ní připojili.
Dále si připravíme jednotlivé tabulky v databázi pomocí database migration (skvělý nástroj)
1 2 3 4 |
php artisan make:migration create_orders_table php artisan make:migration create_products_table php artisan make:migration create_order_product_table php artisan make:migration create_customers_table |
Oproti minulému seriálu prozatím vypouštím kategorie pro zboží, poněvadž e-shop je určen pro prodej jen několika výrobků. Naopak přidána ja tzv. pivot table pro určení výrobků, které patří do objednávky.
Objednávky – tak tady evidujeme jen zákazníka, kterému objednávka patří a stav objednávky.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
class CreateOrdersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('orders', function (Blueprint $table) { $table->increments('id'); $table->integer('user_id')->unsigned()->index(); $table->string('status'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('orders'); } } |
Výrobky opět nic složitého – název, popis, SEO titulek a cena.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class CreateProductsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->text('description'); $table->string('slug')->unique; $table->decimal('price',10,2); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('products'); } } |
Ovšem nyní přichází ta tzv. pivot tabulka nebo tabulka vztahů, která určuje vztah mezi výrobkem a jednotlivou objednávkou.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class CreateOrderProductTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('order_product', function (Blueprint $table) { $table->integer('order_id')->unsigned()->index(); $table->foreign('order_id')->references('id')->on('orders'); $table->integer('product_id')->unsigned()->index(); $table->foreign('product_id')->references('id')->on('products'); $table->integer('quantity'); $table->decimal('price',10,2); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('order_product'); } } |
No a nakonec zákazníci
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
class CreateCustomersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('customers', function (Blueprint $table) { $table->increments('id'); $table->string('firstname'); $table->string('lastname'); $table->string('street'); $table->string('city'); $table->string('psc'); $table->string('email'); $table->string('phone'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('customers'); } } |
pak spustime migraci databaze
1 |
php artisan migrate |
no a pokud je vše správně máme vytvořenu pro nás e-shop databázi
Pokud se to nekomu nechce psat zdroje jsou na githubu