我正在开发一个分类广告平台,我遇到了关系问题。虽然我认为我已经把所有事情都做好了,但仍然存在这个问题。
情况如下: 我有一个模型 类别 (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
当我收集集合时,我可以看到所有的广告和关系以及类别和子类别......但是当我尝试输出它时,我得到了这个错误试图获得非属性对象
帮助任何人? 感谢
答案 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');
}