2017-10-25 18 views
0

レッスンテーブルに "subject_id"がある間に "lessons.subjects_id"が表示されています。私の関係のどこに問題があるのか​​知りません。私の関係のモデルは下の通りです:Laravel idテーブルに余分な "s"を渡す関係テーブル

class Lessons extends Model 
{ 
    public function subject() 
    { 
    return $this->belongsTo('Lea\Subjects'); 
    } 

    public function category() 
    { 
    return $this->belongsTo('Lea\Category'); 
    } 

} 

対象モデルは次のとおりです。

class Subjects extends Model 
    { 

     public function category() 
     { 
     return $this->belongsTo('Lea\Category'); 
     } 
     public function Lessons() 
     { 
     return $this->hasMany('Lea\Lessons'); 
     } 
    } 
+1

私は、laravel自動pluralizesテーブル名からだとかなり確信していますモデルの複数のバージョン(デフォルトでは単数形であると仮定)に基づいて、あなたのモデルがすでに複数化されていることが問題の原因です。これは脇に[ドキュメント(テーブル名の下)](https://laravel.com/docs/5.5/eloquent)にあります。 – Daedalus

答えて

1

あなたがあなたについて彼を教えるために持っているLaravelの慣習を尊重しなかった場合;)あなたは外部キーの名前を追加することによって。

雄弁は モデル名に基づいて、関係の外部キーを決定します。documentationあなたが持っているで

この場合、Phoneモデルは自動的に にuser_idの外部キーがあるものとみなされます。あなたはこの規則を無効にしたい場合は、 あなたはhasOneのメソッドに2つ目の引数を渡すことがあります。

class Lessons extends Model 
{ 
    public function subject() 
    { 
      //         your foreign key 
     return $this->belongsTo('Lea\Subjects', 'subject_id'); 
    } 

    public function category() 
    { 
    return $this->belongsTo('Lea\Category'); 
    } 

} 

そして

class Subjects extends Model 
{ 

    public function category() 
    { 
    return $this->belongsTo('Lea\Category'); 
    } 
    public function Lessons() 
    { 
    //         your foreign key 
    return $this->hasMany('Lea\Lessons', 'subject_id'); 
    } 
} 
+0

はい、それは私の学習であり、私はどこでララベル大会を逃したのか知りたいです。あなたの解決策は、手動のforgienキー列名を使用しています。大会に出席しなかった場所を教えてくれますか? –

+0

私は答えを更新しました;) – Maraboc

+0

助けてくれてありがとう私はすでに投票して答えをマークしています:) –

関連する問題