2017-10-01 1 views
0

분류 광고 플랫폼을 사용하고 있으며 관련성에 문제가 있습니다. 나는 모든 것을 올바르게 설정했다고 생각하지만 여전히이 문제가 있습니다.Laravel : 카테고리의 부모를 얻을 수 없습니다.

이 시나리오는 이것이다 : 내가 가진 모델 카테고리 folowing 관계와 (앱 \ 카테고리가)

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'); 
    } 

} 

나는 또한 모델 고라가있는 하위 범주를 형성하기 위해 (App \ Advert) 다음과 같은 관계로

class Advert extends Model 
{ 

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

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

} 
,210

그리고 마지막으로 내가 가진 다음과 같은 관계를 가진 모델 사용자 (앱 \ 고라)

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

흠이 모음을 얻고있는 것 같다 또는 사용자가 있는지 확인해야합니다 어떤 광고가없는 사용자가있을 수도 있다는 의미의 카테고리가 있습니다. 블레이드 광고를 반복 해보십시오. btw를 사용하면 $ adverts = $ user-> adverts() -> with ('category', 'category.parent') -> get(); –

+0

카테고리가없는 광고 나 상위가없는 카테고리가있는 것처럼 보입니다. 구문에 대해서는 '-> with ('category.parent ')'를 사용할 수 있으며 카테고리를로드합니다. 카테고리가있는 광고 만 가져 오거나 with ('category', function() ...)를 사용하여'whereHas'를 볼 수도 있습니다. – 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'); 
} 
관련 문제