欢迎光临
我们一直在努力

laravel通过数据迁移给表字段ID添加主键、自增、索引排序algorithm设置为BTREE,laravel使用doctrine/dbal更改表字段,Class ‘Doctrine\DBAL\Driver\PDOMySql\Driver’ not found

首先看一下主键的一些写法

// 生成字段
$table->integer('id');                              // 增加类型为INT,长度为10的id字段
$table->bigInteger('id');                           // 增加类型为BIGINT,长度为20的id字段

$table->id();                                       // 增加类型为BIGINT,长度为20,自增,主键为id的字段
$table->increments('id');                           // 增加类型为INT,长度为10,自增,主键为id字段
$table->bigIncrements('id');                        // 增加类型为BIGINT,长度为20,自增,主键为id字段
// 设置类型为INT的主键
$table->integer('id')->primary();                   // 增加类型为INT,长度为11,(无自增属性)主键为id字段
$table->integer('id')->autoIncrement();             // 增加类型为INT,长度为11,自增,主键为id字段
$table->integer('id')->primary()->autoIncrement();  // 无法执行,autoIncrement()自动将基添加为自增加主键
// 设置类型为BIGINT的主键
$table->bigInteger('id')->primary();                // 增加类型为BIGINT,长度为20,(无自增属性)主键为id字段
$table->bigInteger('id')->autoIncrement();          // 增加类型为BIGINT,长度为20,自增,主键为id字段
$table->bigInteger('id')->primary()->autoIncrement();// 无法执行,autoIncrement()自动将基添加为自增加主键

索引排序algorithm的设置方法:

(错误写法)同一个数据迁移表里无法执行两条设置同一字段为主键的写法。

// 错误写法
$table->increments('id');
$table->primary('id','id','BTREE');  // algorithm 使用BTREE

正确写法(但此写法并未实现id自增的设置):

$table->integer('id');
$table->primary('id','id','BTREE');  // algorithm 使用BTREE

需求分析

需求:

生成id字段,要求id为自增,主键,且索引排序为:algorithm

分析:

根据反复试验,无法同时设置这么多项。

根据上面的分析,要想实现这个需求,必须要先生成表,然后再更改表。

laravel框架默认不带更改数据库字段的包,因此需要另外安装一个doctrine/dbal。

实现:

更改字段需要安装,如果未安装,更改表字段会提示:

Changing columns for table "my_tables" requires Doctrine DBAL. Please install the doctrine/dbal package.

1、安装 doctrine/dbal

composer require doctrine/dbal=^2.*

提示:直接安装最新版本的doctrine/dbal 会提示如下错误(可能是兼容性问题,或者需要另外配置)切换回2.*版本的即解决问题

Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found

2、代码实现

public function up()
{
    // 创建表
    Schema::create('my_tables', function (Blueprint $table) {
        $table->integer('id');
        $table->primary('id', 'id', 'BTREE');
    });

    // 更改表,添加自增加属性
    Schema::table('my_tables', function (Blueprint $table) {
        $table->integer('id')->autoIncrement()->change();
    });
}

提示:如果先添加自增主键,laravel数据迁移无法再通过在数据迁移中实现将索引排序algorithm设置为BTREE

赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » laravel通过数据迁移给表字段ID添加主键、自增、索引排序algorithm设置为BTREE,laravel使用doctrine/dbal更改表字段,Class ‘Doctrine\DBAL\Driver\PDOMySql\Driver’ not found

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址