На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Урок 22. Введение в Eloquent модели



На этом и следующих нескольких уроках по Laravel мы создадим еще одно приложение. А сегодня давайте поговорим о создании моделей для laravel. Работать будем с такой вот таблицей products с полями

  • id (uint autoincrement)
  • art (артикул, string), уникальный индекс
  • name (string)
  • status (string "available"|"unavailable")
  • data (jsonb) - здесь хранить несколько полей на ваше усмотрение, например color и size
  • а также timestamps и soft deletes
Миграция для таблицы базы данных

Тут все просто, мы уже такое делали на прошлом уроке. Файл для миграции:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
			$table->string('art', 255)->unique();
			$table->string('name', 255);
			$table->string('status', 255);
			$table->json('data');
			$table->integer('deleted');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}
Модель

Eloquent модель Product, связанную с данной таблицей, создадим вот так:

php artisan make:model Product


Теперь у нас появился вот такой файл app\Models\Product.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;
}
По умолчанию он будет брать данные из таблицы products, используя дефолтный коннект с базой данных. Дальше давайте создадим контроллер MyProduct

php artisan make:controller MyProduct
Теперь у нас появится файл app\Http\Controllers\MyProduct.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MyProduct extends Controller
{
    //
}
Немного изменим его:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Product;

class MyProduct extends Controller
{
    public function index(){
        $products = Product::all();
        return view('product', compact('products'));
    }
}
И еще в \resources\views\ создадим файл product.blade.php с таким кодом:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

            body {
                font-family: 'Nunito', sans-serif;
            }
        </style>
    </head>
    <body class="antialiased">
        @foreach ($products as $product)
            <div>{{ $product->name }}</div>
        @endforeach
    </body>
</html>
Еще чуть не забыли прописать роут для нашей страницы в routes\web.php

Route::get('product', 'App\Http\Controllers\MyProduct@index');
Теперь попробуем добавить какой-нибудь товар через phpmyadmin например, чтобы убедиться, что все работает и перейдем на странице с выводом http://localhost/my_shop/public/product. Все должно заработать.

На следующих урокам мы на основе этого расширим функционал, реализуем добавление и удаление продуктов, вывод только доступных, валидацию и много другого интересного.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, уроки по Laravel, laravel, модель, php

Читайте также:



Криптоанализ
Окно «Подробнее» для OpenCart


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.