Laravel Eloquent强迫我的var成为主键

时间:2016-12-13 21:13:41

标签: php mysql laravel

我尝试运行迁移来创建数据库但是我所做的所有更改都以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']);

那么,如何解决这个问题?

0 个答案:

没有答案