2017-08-19 54 views
0

創建額外的列樞軸遷移我讀這 https://laravel.com/docs/5.4/eloquent-relationships#many-to-many 和我發現在laravel

php artisan migrate 

不會自動創建數據透視表,我查了一下我應該如何創建它,但我不能」瞭解如何使用額外的列創建它。 例如,這些都是我的相關機型:

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

,我並不需要一個相反的關係在這裏實例化其他模型

class Course extends Model 
{ 
// 
} 

問題是當我去mysql我找不到數據透視表。那麼如何使用這些透視列手動創建它。

+0

創建一個遷移。基本的遷移規則在這裏https://laravel.com/docs/5.4/migrations –

+0

[如何創建一個數據透視表laravel](https://stackoverflow.com/questions/15821822/how-is-a -pivot-table-created-by-laravel) –

+0

@Bharat Geleda在發佈問題之前,我閱讀了此主題。我需要指定問題中未提及的額外列。儘管他的第二個答案可能適用於我。但是我沒有從這個角度來看待它。我回來的時候會嘗試。 –

回答

2

您必須手動創建中間/透視表(您必須命名您的字母順序表)使用這樣的遷移:

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