2017-10-01 10 views
0

私は分類された広告プラットフォームで作業しており、関係に問題があります。私はすべてを正しく設定したと思うが、まだこの問題がある。私もモデル広告を持っている私は、サブカテゴリにLaravel:カテゴリの親を取得できません

class Category extends Model 
{ 
    public function parent() { 
     return $this->belongsTo('App\Category', 'parent_id'); 
    } 

    public function children() { 
     return $this->hasMany('App\Category', 'parent_id'); 
    } 

    public function adverts() { 
     return $this->hasMany('App\Advert'); 
    } 

} 

を形成するために、folowing関係をモデルカテゴリー(APP \カテゴリを)持っている

シナリオはこれです(App \ Advert)以下の関係を持つ

class Advert extends Model 
{ 

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

    public function user() { 
     return $this->belongsTo('App\User'); 
    } 

} 

そして最後に私が持っている以下の関係を持つモデルユーザー(APP \広告)

class User extends Authenticatable 
{ 
    public function adverts() { 
     return $this->hasMany('App\Advert'); 
    } 
} 

私はこの

$adverts = $user->adverts()->with('category')->with('category.parent')->get(); 

のようにコントローラ内のコレクションに広告を集めています私が直面している問題は、広告とそのカテゴリに属する​​サブカテゴリを出力しようとするときです。この問題が発生しています。

Trying to get property of non-object (View: 
..\resources\views\user\profile.blade.php) 
次の行に

$ad->category->parent->name . '/' . $ad->category->name 

私はカテゴリおよびサブカテゴリと一緒にすべての広告との関係を見ることができるコレクションをddは...しかし、私は、この私のような出力にそれを試してみてくださいこのエラーがあります非オブジェクトのプロパティを取得しようとしています

ヘルプ誰ですか? ありがとう

+0

うーん、これはあなたがコレクションを取得していると思われたり、ユーザーがそのことを確認する必要がありあなたがたぶん広告を持っていないユーザーを持つことを意味するカテゴリを持っています。ブレードで$広告を繰り返してみてください。あなたは$ adverts = $ user-> adverts() - > with( 'category'、 'category.parent') - > get();を使うことができます。 –

+0

カテゴリのない広告や親なしの広告があるようです。構文の場合は ' - > with( 'category.parent')'だけを使うことができます。これもカテゴリをロードします。カテゴリを持つ広告を取り出すか、 'with( 'category'、function()...')だけを使用することを確認することもできます。 – Robert

+0

カテゴリには親がありますか?その場合、カテゴリに親があるかどうかを確認してから、その名前を表示する必要があります。 – MmynameStackflow

答えて

0

これが何かを助けるかどうかはわかりませんが、コードを読みやすくするために投稿しています。任意のクレジット期待していない、私のモデルのいずれかで)

を私は子供を設定/このような両親との関係:

/** 
* Get the Categories associated with the parent's `id` 
*/ 
public function children() 
{ 
    return $this->hasMany('App\Category', 'parent_id', 'id'); 
} 

/** 
* Get the parent associated with the Category`s parent_id` 
*/ 
public function parent() 
{ 
    return $this->belongsTo('App\Category'); 
} 
関連する問題