Laravel 4:扩展模型';s查询,以返回带有模型(无关系)但没有';t将数据写入attributes属


Laravel 4: Extend model's query to return additional fields with a model (no relations) but don't write data to attributes property

假设,我在几个表中有一些与模型相关的数据,而不是模型驻留在其中。这些表是动态创建的(自定义EAV实现(。我如何让Eloquent在不建立关系的情况下,在用于获取模型的查询中加入这些表?

如果我能破解一个查询,Eloquent将在查询完全构建后,但在执行之前,使用该查询从数据库返回模型,那就太好了。

另外,问题是来自联接表的数据不应该进入模型的属性。

当使用Eloquent查询数据库时,有一种简单的方法可以在模型中动态添加附加属性,并且它不会包含在模型的属性中。例如,如果您想在模型中添加一个字段,该字段在模型的attributes属性中不可用,但您想将其用作属性,然后在模型中创建一个accessor方法,如下所示:

// In User model for example
public function getFullNameAttribute()
{
    return $this->first_name . ' ' . $this->last_name;
}

现在,如果你使用这样的东西:

echo User::find(1)->fullName;

然后,您将得到一个完整的名称字符串(连接的first_namelast_name(,但实际上没有可用的fullName字段作为模型的attribute。这被称为accessor方法,请查看Laravel网站上的文档。