Laravel ORM应该返回Relation

时间:2015-10-16 12:42:20

标签: laravel laravel-5

是否可以直接向模型返回hasOne关系的值?

例如:

$List = Element::orderBy('title')->get();

元素有一个" hasOne"与列的关系:

public function type()
{
    return $this->hasOne('App\Type', 'id', 'type_id');
}

我现在如何自动返回"类型"对于模型?

在片刻,我正在遍历所有元素,并构建我自己的"数组"对象,包括键#"类型"在这个例子中。但我不愿意只在我的模型中这样做。

我知道如何添加"正常"财产,但它可以是某种关系中的某个人吗?

public function getTypeAttribute($value)
{
    return // how ?
}

protected $appends = array('type');

这可能吗?

编辑:

解决方法可能是使用DB ::来返回正确的值 - 但是不好的事情是一个好的解决方法:例如:

public function getTypeAttribute($value)
{
    // make a query with $this->type_id and return the value of the type_name 
}

protected $appends = array('type');

2 个答案:

答案 0 :(得分:2)

获取元素时需要急切加载关系:

$list = Element::with('type')->orderBy('title')->get();

然后使用

访问type
foreach ($list as $item) {
    echo $item->type->type_name; 
}

其中type_nametypes

中列的名称

答案 1 :(得分:0)

创建查询范围并在该范围内,从其他表中加入属性。

http://laravel.com/docs/5.1/eloquent#query-scopes

http://laravel.com/docs/5.1/queries#joins