1.2Laravel模型(Eloquent)之迁移(Migration)

生成迁移

php artisan make:migration create_flights_table
<?php

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

class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('flights');
    }
}
php artisan migrate

//创建表
Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email');
    $table->timestamps();
});

//更新表
Schema::table('users', function (Blueprint $table) {
    $table->integer('votes');
});

//重命名表
Schema::rename($from, $to);

//删除表
Schema::drop('users');
Schema::dropIfExists('users');

//创建列
Schema::table('users', function (Blueprint $table) {
    $table->integer('votes');
});

//修改列
composer require doctrine/dbal

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->change();
});

//重命名列
Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('from', 'to');
});

//删除列
Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('votes');
});

索引

//创建索引
Schema::table('users', function (Blueprint $table) {
    $table->string('email')->unique();
});

//重命名索引
$table->renameIndex('from', 'to')
删除索引描述
$table->dropPrimary('users_id_primary');从“用户”表中删除主键。
$table->dropUnique('users_email_unique');从“用户”表中删除唯一索引。
$table->dropIndex('geo_state_index');从“geo”表中删除一个基本索引。
$table->dropSpatialIndex('geo_location_spatialindex');从“geo”表中删除空间索引(SQLite 除外)。

外键约束

Schema::table('posts', function (Blueprint $table) {
    $table->foreignId('user_id')->constrained();
});

您还可以为约束的“删除时”和“更新时”属性指定所需的操作:

$table->foreignId('user_id')
      ->constrained()
      ->onUpdate('cascade')
      ->onDelete('cascade');

还为这些操作提供了另一种表达性语法:

方法描述
$table->cascadeOnUpdate();更新应该级联。
$table->restrictOnUpdate();应该限制​​更新。
$table->cascadeOnDelete();删除应该级联。
$table->restrictOnDelete();应该限制​​删除。
$table->nullOnDelete();删除应将外键值设置为空。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/laravel/10918.html

发表评论

登录后才能评论