2017-11-09 20 views
0

私のプロジェクトはローカルホスト上で正常に動作していますが、サーバー上ではレッスンページのみでエラーが発生しています。Laravelの関係がサーバー上で動作していません

対象モデルは

class Subjects extends Model 
    { 
    public function category() 
    { 
     return $this->belongsTo('Lea\Category'); 
    } 
    public function lesson() 
    { 
     return $this->hasMany('Lea\Lessons'); 
    } 
    public function chapter() 
    { 
     return $this->hasMany('Lea\Chapters'); 
    } 
    public function users() 
    { 
     return $this->belongsToMany('Lea\User', 'subject_user', 'subject_id', 'user_id'); 
    } 
    } 

で、レッスンのモデルは

class Lessons extends Model 
{ 
    public function chapter() 
    { 
     return $this->belongsTo('Lea\Chapters'); 
    } 
    public function subject() 
    { 
     return $this->belongsTo('Lea\Subjects', 'subject_id'); 
    } 
    public function category() 
    { 
     return $this->belongsTo('Lea\Category'); 
    } 

} 

私のコントローラのレッスンは、以下のような方法でインデックスを持っています。

public function index() 
    { 

     $lessons = lessons::orderBy('id', 'asc')->paginate(5); 
     return view('admin.lessons.index')->withLessons($lessons); 
    } 

私はサブジェクト名を呼び出す方法を以下に示します。最初の件名は関係件名、2件目は件名がdbに保存されているフィールド名です。データのように取得するためのforeachを使用して:

@foreach ($lessons as $lesson) 
{{$lesson->subject->subject}} 
@endforeach 

対象テーブルのスキーマを

id 
subject 
admin_id 
users_id 
category_id 
created_at 
updated_at 

レッスンのテーブルスキーマは、よりそれのようだ

id 
title 
slug 
category_id 
subject_id 
chapter_id 
users_id 
content 
image 
+0

あなたのテーブルのあなたのフィールド名は何ですか? subject_idとsubject_userと同じロジックをたどり、実際にフィールド "subject_name"という名前を付けた可能性はありますか?問題があなたのサブジェクトテーブル – Luke

+0

にあるように見える場合は、フィールド名が問題であれば、このコード{{$ lesson-> subject}}を置いてjson出力を与えるべきですが、サーバー上でnullになっていますが、localhost上のjsonである –

+0

$ lessonオブジェクトはあなたのコントローラを介してあなたのビューに? – Luke

答えて

0

です;)

どれだけあなたを編集オブジェクトを次のオブジェクトに渡しています:

これが何をしているか
... 
return view('admin.lessons.index')->with(compact('lessons')); 

コンパクト()は、本質的にそれの名前($レッスン)によってオブジェクト/変数を取り、同じ名前のビューに渡します。

... 
return view('admin.lessons.index')->with('lessons', $lessons); 

乾杯:

別の方法は、としてそれを記述することです!

+0

を置いた後でnullになっています戻り値は問題ではありません。レッスンとサブジェクトのちょうど関係の値が表示されていませんが、カテゴリとの関係も働いています –

+0

なぜあなたのフィールド名はsubject_idですか?それは単にidとして保つのが簡単ではないでしょうか? categoryが動作していると言うと、主テーブルに対して定義しているプラ​​イマリキーに問題がある可能性があります。 – Luke

+0

レッスンテーブルの外部キー。 –

0

サーバーでエラーが発生したが、ローカルマシンでエラーが発生したのは、サーバーデータベースが空である(または少なくともレコード数が少ない)ためです。

{{$lesson->subject->subject}}

教訓は何の主題を持っていないので、ヌルです。そして、あなたはヌルのproprty subjectを得ることを試みる。

Laravel 5.5を使用している場合は、optional()メソッドで件名をラップすることができます。

{{optional($lesson->subject)->subject}}

< Laravel 5.5 {{$lesson->subject ? $lesson->subject->subject : ''}}

関連する問題