我尝试运行迁移来创建数据库但是我所做的所有更改都以mysql级别的错误结束。模型是User,Classedeusu(用户类)和classxusu(关系n x m,类x用户)。
Classedeusu(用户类)的定义
Schema::create('classedeusus', function (Blueprint $table) {
$table->string('classe'); //just the class name
$table->primary('classe');
});
用户定义
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
classxusu(n x m)的定义
Schema::create('classexusus', function (Blueprint $table) {
$table->string('classe');
$table->integer('user_id');
$table->primary(['classe', 'user_id']);
$table->foreign('classe')->references('classe')->on('classedeusus');
$table->foreign('user_id')->references('id')->on('users');
});
在classxusu上,如果我将列user_id
定义为$table->integer
,我最终会在classxusus
中找到一个MySql Integer(11)签名列(但在users
上表,$table->id
生成了一个Integer(10)无符号列。但是,如果我将其更改为$table->integer
以外的任何内容(例如,$table->integer('user_id', 10)->unsigned()
),则会自动将该列标识为主键,因此我在下一个中遇到错误在$ table-> primary([' classe',' user_id']);
那么,如何解决这个问题?