【问题标题】:Laravel 5 - Composite key indexes in migrationsLaravel 5 - 迁移中的复合键索引
【发布时间】:2014-12-12 00:32:58
【问题描述】:

复合索引是一个我没有完全经验的主题,我不确定我是否做得对?或者,如果 Laravel 在迁移时正确解析我的代码。这看起来正确吗?

Schema::create('friends', function(Blueprint $table)
{
    $table->increments('id');
    $table->integer('requester_id')->unsigned();
    $table->integer('requestee_id')->unsigned();
    $table->timestamps();

    $table->foreign('requester_id')->references('id')->on('users');
    $table->foreign('requestee_id')->references('id')->on('users');

    $table->unique(['requester_id', 'requestee_id'], 'composite_index');
});

这是 Sequel Pro 显示的内容:

http://i.imgur.com/5A4LZH3.png

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    你所拥有的是正确的。


    注意:您没有指定索引的名称。 Laravel 会根据被索引的列自动为你生成一个名称。

    【讨论】:

    • 谢谢,我将名称编入索引,以便在图片中更容易理解。
    【解决方案2】:

    这是我的示例:为每个用户 user_id 创建唯一的 external_id

        Schema::create('orders', function (Blueprint $table) {
            $table->increments('id');
    
            $table->string('external_id')->nullable();
            $table->unique(['external_id', 'user_id']); // <<---------
    
            $table->integer('user_id')->unsigned()->index();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    
            // ...
        });
    

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2016-01-20
      • 2017-01-29
      • 2015-04-18
      • 2016-12-16
      • 1970-01-01
      相关资源
      最近更新 更多