php - 在 laravel 中创建带有额外列的数据透视迁移

标签 php mysql laravel laravel-5.4

我读过这个 https://laravel.com/docs/5.4/eloquent-relationships#many-to-many 我发现

php artisan migrate

不会自动创建数据透视表,我检查了我应该如何创建它但我无法找到如何使用额外的列创建它。 例如,这些是我的相关模型:

class User extends Authenticatable {
  public function courses() 
  {
    return $this->belongsToMany('App\Course')
    ->withPivot('attendance', 'grade');
      ->withTimestamps();
  }
}

另一个模型

class Course extends Model
{
//
}

我不需要反向关系来在这里实例化。

问题是当我转到 mysql 时找不到数据透视表。那么如何使用这些数据透视列手动创建它。

最佳答案

您必须使用这样的迁移手动创建中间/数据透视表(您必须按字母顺序命名您的表):

    public function up()
    {
        Schema::create('course_user', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users');
            $table->integer('course_id')->unsigned();
            $table->foreign('course_id')->references('id')->on('courses');
            $table->string('attendance');
            $table->string('grade');
            $table->timestamps();
        });
    }

在此之后,运行迁移:

php artisan migrate

关于php - 在 laravel 中创建带有额外列的数据透视迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774316/

相关文章:

php - Laravel 同步多对多错误

php - 整数相除得到整数值

javascript - 如何在单击时将文本更改为文本框

mysql - 如何从MySQL中获取每分钟两次的平均值

mysql - 无法安装适用于 Python 3 的 mysql 连接器

javascript - 从 javascript 获取输入值时无法将值传递给 Controller

php - laravel 在 foreach 循环中使用 if 条件时检查 foreach 循环的最后一次迭代

php - 如何将 ->isDirty() 与 laravel ->update() 合并

php - 库存超出限制,仍然插入订单表

mysql - 我是否需要使用插入或内部联接?