Вывод страниц из БД в Laravel

225
14 марта 2018, 07:23

Подскажите, пожалуйста, конструкцию вывод страниц из базы данных в Laravel. Например, site.ru/hello-world

Answer 1

В первую очередь, необходимо настроить подключение к вашей базе данных. Для этого в Laravel >= 5 есть конфигурационный файл .env (находится в корне проекта)

После настройки нужно создать файл миграций, следуя соглашению. К примеру, вам нужна таблица "магазин" - значит называть её нужно во множественном числе (магазины - прим. перевод: shops). Для этого открываете вашу консоль, переходите (с помощью команды cd) в директорию, в которой установлен фреймворк, и выполняете команду:

php artisan make:migration create_shops_table

Эта команда создаст файл примерно с таким именем:

ваш.сайт\database\migrations\2018_03_12_175226_create_shops_table.php

Открываете этот файл в вашей среде разработки, и записываете в метод up() названия полей. Для примера, можете просто скопировать этот код - для запуска и демонстрации этого будет достаточно:

<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateShopsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('shops', function (Blueprint $table) {
            $table->increments('id');
            $table->string('text');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('shops');
    }
}

После сохранения изменений в файле миграций, нужно выполнить в консоли следующую команду (запустить миграции):

php artisan migrate

Эта команда создаст в базе данных таблицу shops с несколькими полями.

Далее, нужно создать модель Shop. Для этого выполняете в консоли команду:

php artisan make:model Shop

После создания модели (на данном этапе её не нужно редактировать) запускаете в консоли удобный инструмент для работы с базой данных Тинкер, он понадобится для записи в базу наших значений, которые позже мы выведем в браузер:

php artisan tinker

В открывшемся интерфейсе пишете следующий код (в конце каждого выражения нажимаете "Ввод")

Создаёте экземпляр класса Shop:

$shop = new App\Shop;

Сохраняете тестовый текст в свойстве text экземпляра класса Shop:

$shop->text = 'Текст для записи в базу (Hello, World! - или что вам было нужно...)';

Выполняете запись в базу с помощью метода save() (если запись успешна, после нажатия на "Ввод" вы увидите true):

$shop->save();

После этого интерфейс Тинкера нужно закрыть командой exit - при этом вы увидите сообщение Exit: Goodbye.

Далее в файле ваш.сайт\routes\web.php нужно создать маршрут, по которому фреймворк будет вызывать необходимый контроллер. Для примера, назовём контроллер Hello, тогда наш маршрут будет выглядеть так:

Route::get('hello-world', 'HelloController@index');

Далее в консоли создаём контроллер с помощью команды

php artisan make:controller HelloController

Контроллер будет создан по адресу: ваш.сайт\app\Http\Controllers\HelloController.php Открываем его в IDE для редактирования, и вставляем в него этот код:

<?php
namespace App\Http\Controllers;
use App\Shop;
use Illuminate\Http\Request;
class HelloController extends Controller
{
    public function index()
    {
        $shops = Shop::all();
        return view('hello', compact('shops'));
    }
}

После сохранения изменений останется создать файл-шаблон hello.blade.php в директории ваш.сайт\resources\views\, и прописать в нём этот код:

@foreach ($shops as $shop)
    <div class="body">{{ $shop->text }}</div>
@endforeach

Всё, что вам останется сделать, это запустить ваш маршрут по адресу: http://ваш.сайт/hello-world

Если всё сделано правильно, в браузере вы увидите текст: Текст для записи в базу (Hello, World! - или что вам было нужно...)

READ ALSO
Как получить значение из глобального fixture?

Как получить значение из глобального fixture?

Как получить значение из глобального Fixture?

193
Профессиональное использование ООП

Профессиональное использование ООП

Вот я не понимаю, почему, когда делают какой-нибудь метод, то у него получается много вложений?

199
Получить список всех видео из YouTube

Получить список всех видео из YouTube

Пытался делать это простым file_get_contents(); список видео получаю, но получаю всего 30, остальные не получаю так как они подгружаются ajax-омПринял...

167