为了账号安全,请及时绑定邮箱和手机立即绑定

在 LARAVEL 5.6 上命名 UNIQUE、INDEX、FOREING KEYS 的正确方法

在 LARAVEL 5.6 上命名 UNIQUE、INDEX、FOREING KEYS 的正确方法

PHP
冉冉说 2023-10-21 10:31:21
我在 LARAVEL 上有这样的迁移代码:public function up(){    Schema::create('estados', function (Blueprint $table) {        $table->bigIncrements('id')->primary('PRIMARY');        $table->string('nombre' , 30)->nullable();        $table->unique('nombre' , 'nombre_u');        $table->integer('pais_id')->default('1');        $table->foreign('pais_id' , 'pais_id_fk')->refereces('id')->on('paises');        $table->index('pais_id' , 'pais_id_fk_idx');    });}我该如何改进我的代码?例如,我不知道如何将同一行中的接下来的两行设置为 UNIQUE:$table->string('nombre' , 30)->nullable();$table->unique('nombre' , 'nombre_u');或者将这 3 行变成只有 1 行:$table->integer('pais_id')->default('1');$table->foreign('pais_id' , 'pais_id_fk')->refereces('id')->on('paises');$table->index('pais_id' , 'pais_id_fk_idx');你可以帮帮我吗?提前致谢。
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

根据我的经验,这是最好的写法。如果您的其他表被命名,pais那么这将是最好的:


public function up()

{

    Schema::create('estados', function (Blueprint $table) {

        $table->id();

        $table->string('nombre' , 30)->nullable()->unique();

        $table->foreignId('pais_id')->constrained();

    });

}

不然的话,这也不错……


public function up()

{

    Schema::create('estados', function (Blueprint $table) {

        $table->id();

        $table->string('nombre' , 30)->nullable()->unique();

        $table->unsignedBigInteger('pais_id')->default('1');

        $table->foreign('pais_id')->refereces('id')->on('paises');

    });

}


查看完整回答
反对 回复 2023-10-21
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

你可以做


public function up()

{

    Schema::create('estados', function (Blueprint $table) {

        $table->bigIncrements('id')->primary('PRIMARY');

        $table->string('nombre' , 30)->unique()->nullable();

        $table->integer('pais_id')->index()->default('1');

        $table->foreign('pais_id')->references('id')->on('paises');

    });

}

你不需要创建手动索引或外键,Laravel 会处理这些,除非你愿意。


查看完整回答
反对 回复 2023-10-21
?
达令说

TA贡献1821条经验 获得超6个赞

不要忘记使用unsigned()在pais_id


public function up()

{

    Schema::create('estados', function (Blueprint $table) {

        $table->bigIncrements('id')->primary('PRIMARY');

        $table->string('nombre' , 30)->unique()->nullable();

        $table->integer('pais_id')->unsigned()->index()->default('1');

    });

    

    Schema::table('estados', function ($table) {

      $table->foreign('pais_id')->references('id')->on('paises');

    });

}


查看完整回答
反对 回复 2023-10-21
  • 3 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信