Laravel - 模型和功能

时间:2014-02-23 15:33:31

标签: laravel-4

我有一些如下表:

id
name
parent_id
...

parent_id是来自同一个表本身的id,因为它很简单。例如:

id: 1
name: abc
parent_id: 0

id: 2
name: abc_parent
parent_id: 1

id: 3
name: another
parent_id: 1

如何在该模型中的某个函数中获取“名称”?有点像...

public function parentName()
{
    $pid = this->parent_id;
    /// return self::find($pid)->name; ### this does not actually work
}

我应该创建一个单独的函数并将parent_id传递给它吗?或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

在您的模型中,定义父relationship

class Model extends Eloquent {
  public function parent() {
    return $this->hasOne('Model', 'parent_id');
  }
}

这样您就可以使用$item->parent->name之类的关系。

如果您需要$item->parentName之类的内容,可以将attribute accessor作为该关系的别名。

public function getParentNameAttribute() {
  return $this->parent->name;
}

然后,您就可以$item->parentName