Метод up
Метод up является обязательной частью любой миграции в Laravel.
Он выполняется при запуске миграции и определяет изменения,
которые должны быть применены к базе данных. Внутри этого метода
определяется схема таблицы с помощью фасада Schema.
Синтаксис
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('table_name', function (Blueprint $table) {
$table->id();
$table->string('column_name');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('table_name');
}
}
?>
Пример
Давайте создадим миграцию для таблицы users
с полями id, name, email
и временными метками:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
}
?>
Результат выполнения команды:
"Migration table created successfully."
Пример
Давайте изменим существующую таблицу, добавив новое поле
age с использованием метода table:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAgeToUsersTable extends Migration
{
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age')->nullable();
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age');
});
}
}
?>
Результат выполнения команды:
"Column added successfully."
Пример
Давайте создадим таблицу с внешним ключом, связывающую
таблицы posts и users:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->foreignId('user_id')->constrained();
$table->boolean('is_published')->default(false);
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('posts');
}
}
?>
Результат выполнения команды:
"Table created with foreign key constraint."