需要在 Laravel 4 的同一张表中设置一对多关系
Posted
技术标签:
【中文标题】需要在 Laravel 4 的同一张表中设置一对多关系【英文标题】:Need to set a 1 to many relationship in the same table in Laravel 4 【发布时间】:2015-05-09 21:58:08 【问题描述】:我有以下型号
类别:
<?php
class Category extends Eloquent
protected $table = "category";
protected $fillable = array('title','parent','metatit','metadsc','metake','metaurl','image');
public function categoryitems()
return $this->hasMany('CategoryItem','catid');
public function parent()
return $this->hasMany('category','parent');
public function child()
return $this->belongsTo('Category','parent');
需要在分类表中设置一对多关系 Ex 类别“城市”是类别“国家”的子类别
当我尝试使用以下代码时发生错误
<?php
$parent = Category::where('id','=',$cat->id)->parent;
echo $parent->title;
?>
错误:
错误异常 (E_UNKNOWN) 未定义属性:Illuminate\Database\Eloquent\Builder::$parent(查看:/var/www/phpWithAngulerJS/app/views/admin/category-edit.blade.php)
【问题讨论】:
【参考方案1】:首先,修复如下关系:
public function children()
return $this->hasMany('Category','parent');
public function parent()
return $this->belongsTo('Category','parent');
而且你的查询需要先执行:
$parent = Category::where('id','=',$cat->id)->first()->parent;
// btw since you have $cat, you probably can do simply:
$cat->parent;
echo $parent->title;
【讨论】:
以上是关于需要在 Laravel 4 的同一张表中设置一对多关系的主要内容,如果未能解决你的问题,请参考以下文章