我正在创建类别模型,其中它有类别模型本身的父级。。我在模型中处理了关系,并以json格式输出。当我这样做的时候
{{ $category->parent }}
它给我:
{"id":1,"name":"test","slug":"test","parent_id":0,"is_active":0,"created_at":"-0001-11-30 00:00:00","updated_at":"-0001-11-30 00:00:00"}
如果我尝试
{{ $category->parent()->name }}
这当然是错误的。关于如何获取父行对象以便$category-
另外,在哪种情况下,我们必须在模型中定义表名,因为如果我不这样做的话,它可以正常工作。
==================================类别模型====================
class Category extends Eloquent {
protected $fillable = array('name', 'slug', 'parent_id', 'is_active');
public static $rules = array(
'name' => 'required|min:3',
'slug' => 'required',
);
public function parent(){
return $this->belongsTo('Category', 'parent_id');
}
public function children() {
return $this->hasMany('Category', 'parent_id');
}
}
您的某些类别没有父级,它们是根节点,因此您必须选中它$category-
现在,不要使用isset
,因为关系没有设置为对象的属性。改用这个:
if (count($category->parent)) // do something
// or is_null
if (is_null($category->parent));
另外get()
返回集合,您需要的是返回单个模型的first()
。
我建议您阅读这个关于递归关系的答案,以便更轻松地使用您的设置:自引用表get N level hierarchy JSON中的Laravel ORM
还有这个,所以你知道为什么我建议用count
而不是is_null
来检查相关模型:Laravel检查相关模型是否存在