Laravel 4:扩展模型的查询以返回带有模型的其他字段(无关系),但不将数据写入属性属性

时间:2014-06-12 17:15:55

标签: php laravel laravel-4 eloquent

假设我在几个表中有一些与模型相关的数据,而不是模型所在的表。这些表是动态创建的(自定义EAV实现)。如何使Eloquent将这些表连接到用于获取模型的查询而不构建关系?

如果我可以在完全构造查询之后但在执行查询之前攻击Eloquent将用于从数据库返回模型的查询,那将是件好事。

此外,问题是来自连接表的数据不应该转到模型的属性。

1 个答案:

答案 0 :(得分:0)

使用Eloquent查询数据库时,有一种简单的方法可以动态地在模型中添加其他属性,并且它不会包含在模型的属性中,例如,如果您想要在模型中添加一个字段,该字段在模型的属性属性中不可用,但您希望像属性一样使用它,然后在模型中创建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字段可用作模型' s {{ 1}}。这称为attribute方法,并在accessor网站上查看相关文档(Accessors & Mutators)。