Блог на Laravel 5 (часть 1) Создание базы данных
Если вы столкнулись с проблемами, задавайте вопросы в комментариях.
Разделы этой серии статей:
- Простой блог на Lavarel 5 – Вступление
- Простой блог на Lavarel 5 (часть 1) - Создание базы данных
- Простой блог на Lavarel 5 (часть 2) - Маршруты и модели
- Простой блог на Lavarel 5 (часть 3) - Контроллеры
- Простой блог на Lavarel 5 (часть 4) - Строим клиентскую часть
- Простой блог на Lavarel 5 (часть 5) - Подключаем (добавляем) редактор tinyMCE и профиль пользователя
В этой статье мы создадим таблицы базы данных для того чтобы сохранять информацию. Для генерации таблиц будем использовать конструкторы Migrations и Schema. Начнем с настройки базы данных. Для этого нужно изменить файл с расширением .env. .env - это скрытый файл в корневой папке приложения. (в данном случае в папке блога)
DB_HOST=localhost
DB_DATABASE=your_database_name
DB_USERNAME=database_username
DB_PASSWORD=database_password
Настройте свою базу в blog >> config >> database.php изменив значение по умолчанию.
<?php
return [
...
...
// set database
default' => 'mysql',
...
...
Для других настроек почитайте Настройка базы данных на базе Lavarel 5 Теперь произведем миграции, используя следующие команды:
php artisan make:migration posts
php artisan make:migration comments
В blog >> database >> migrations появятся два новых файла с окончаниями posts.php и comments.php. Обратите внимание, что до этого там уже были два файла. Первый (2014_10_12_000000_create_users_table.php) генерирует таблицу для пользователей в базе данных. Второй ( 2014_10_12_100000_create_password_resets_table.php ) - таблицу для восстановления пароля. Создаем таблицу для сообщений (постов) Откройте файл, который был создан с помощью миграции, с окончанием posts.php в папке migrations и вставьте этот код. Этот код создает таблицу под названием posts в базе данных.
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class Posts extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// blog table
Schema::create('posts', function(Blueprint $table)
{
$table->increments('id');
$table -> integer('author_id') -> unsigned() -> default(0);
$table->foreign('author_id')
->references('id')->on('users')
->onDelete('cascade');
$table->string('title')->unique();
$table->text('body');
$table->string('slug')->unique();
$table->boolean('active');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
// drop blog table
Schema::drop('posts');
}
}
Migration это основной класс laravel, который используется для контроля версий базы данных. Этот класс содержит две функции up() и down(). Функция up() выполняется при выполнении миграции. Функция down() отменяет функцию up() и выполняется тогда, когда нужно откатить последнюю миграцию или перезапустить базу данных. Schema это еще один класс Lavarel, который создает и изменяет таблицы БД.
Schema::create('posts', function(Blueprint $table)
{
$table->increments('id');
$table -> integer('author_id') -> unsigned() -> default(0);
$table->foreign('author_id')
->references('id')->on('users')
->onDelete('cascade');
$table->string('title')->unique();
$table->text('body');
$table->string('slug')->unique();
$table->boolean('active');
$table->timestamps();
});
В этой части кода мы вызываем функцию create(), которая принимает 2 аргумента. Первый аргумент - это имя таблицы в которой мы работаем, второй - функция замыкания(closure), создающая столбцы в этой таблице.$table - это пример такой таблицы. Laravel предусматривает встроенные функции для типов столбцов в БД. Например, increments('id') создает столбцы с именем 'id', которое является основным ключем(автоматически возрастает). Чтобы ознакомиться более детально прочтите migrations and schema builder. Создаем таблицу для комментариев: Как и раньше вставьте этот код в файл с окончанием commets.php в папке migrations.
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class Comments extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//id, on_blog, from_user, body, at_time
Schema::create('comments', function(Blueprint $table)
{
$table->increments('id');
$table -> integer('on_post') -> unsigned() -> default(0);
$table->foreign('on_post')
->references('id')->on('posts')
->onDelete('cascade');
$table -> integer('from_user') -> unsigned() -> default(0);
$table->foreign('from_user')
->references('id')->on('users')
->onDelete('cascade');
$table->text('body');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
// drop comment
Schema::drop('comments');
}
}
Таблица пользователя: Миграция для таблицы пользователя уже написана в файле 2014_10_12_000000_create_users_table.php. Но нам требуется еще добавить роли пользователю, поэтому просто вставьте одну строчку в этот файл.
$table->string('password', 60);
// add this one line
$table->enum('role',['admin','author','subscriber'])->default('author');
$table->rememberToken();
Мигрируем в БД: Создадим таблицы в БД используя команду:
php artisan migrate
Эта команда сгенерирует все таблички в БД. Вот мы и создали таблицы в базе данных для нашего приложения. После миграции попробуйте перейти по этой ссылке http://localhost:8000/auth/log
25-04-2017 Виктор Матушевский