Laravel:无法获得某个类别的父级

时间:2017-10-01 11:47:13

标签: php laravel model eloquent relation

我正在开发一个分类广告平台,我遇到了关系问题。虽然我认为我已经把所有事情都做好了,但仍然存在这个问题。

情况如下: 我有一个模型 类别 (App \ Category),其中包含以下关系以形成子类别

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

}

最后我有一个模型 用户 (App \ Advert),其关系如下

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

当我收集集合时,我可以看到所有的广告和关系以及类别和子类别......但是当我尝试输出它时,我得到了这个错误试图获得非属性对象

帮助任何人? 感谢

1 个答案:

答案 0 :(得分: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');
}