我想知道如何总是附加一些数据到Eloquent模型,而不需要要求它,例如,当从数据库获取帖子时,我想为每个用户附加用户信息:
{
id: 1
title: "My Post Title"
body: "Some text"
created_at: "2-28-2016"
user:{
id: 1,
name: "john smith",
email: "example@mail.com"
}
}
4条答案
按热度按时间s5a0g9ez1#
经过一些搜索,我发现你只需要在你的Eloquent模型中的
$appends
数组中添加你想要的属性:**更新:**如果数据库中存在该属性,则可以根据下面的David Barker's注解使用
protected $with= ['user'];
然后创建一个访问器为:
这样,你总是会有每个帖子的用户对象可用:
eagi6jfj2#
我发现这个概念很有趣,我学习和分享的东西。在这个例子中,我附加了id_hash变量,然后通过这个逻辑将其转换为方法。
它取第一个char并转换为大写i。即
Id
和下划线后字母改为大写i。即Hash
。Laravel本身添加get和Attribute,将它们合并在一起,得到
getIdHashAttribute()
为了简化,append变量应该是这样的
该方法在模型中定义如下
hmmo2u0o3#
您的数据库表不正确,您不需要追加任何可以使用关系加载的内容:
首先,你的post表应该有user_id列,它引用你的user表id列:{ id:1 user_id:1标题:“我的帖子标题”正文:“Some text”created_at:2016年2月28日
然后在你的帖子模型中,你必须基于你的user_id定义关系:
然后在get API调用中,你要做的就是加载这个关系:例如Posts::with(“user”)-〉get();
a7qyws3x4#
例如,在模型中:
你可以正常地用物体。
鉴于: