我有两个表:用户和关注者。
用户
ID、用户名
1、foo
2、酒吧
3、测试
关注者
id、user_id_follows、user_id_followed
1, 2, 1
2, 3, 1
这意味着用户“bar”和“test”跟随用户“foo”。
我想要一个像这样的结果集:
[
id: "foo",
用户名:“酒吧”,
关注者:[“栏”,“测试”]
]
或者作为 JSON 对象。 这可以通过 eloquent ORM 实现吗?用户与关注者有一个 hasMany 关系,并且关注者属于用户。 是否可以获取关系但仅获取关注者的用户名? 我也尝试通过 raw-sql 查询来做到这一点。但使用 DB::select(DB::raw($query));给我一个非多维对象,这意味着“关注者”只有“栏”,而不是两个关注者。
那么获得多维结果集的最佳方法是什么? 我还可以依赖 eloquentORM 吗?怎么办?
谢谢您并致以诚挚的问候
菲尔
最佳答案
找到了更好的方法。我们要做的是创建用户表到用户表的多对多关系,并使用您的关注者表作为数据透视表。我还做了一些额外的工作,以便您可以查看用户的关注者和关注者。
不幸的是,你的表格设置方式对我来说没有多大意义,所以我的关注者表格看起来像id
,user_id
, follow_id
。这样,我可以通过在 user_id
列中查找该用户的 id 轻松找到该用户正在关注的人,并且通过在 follow_id
列。也许这就是您对表的意思,在这种情况下,您可以只添加您拥有的列名称。考虑到这一点,这就是我所做的。
在您的用户模型中。
public function followers()
{
return $this->belongsToMany('User','followers','user_id_followed','user_id_follows');
}
public function followeds()
{
return $this->belongsToMany('User','followers','user_id_follows','user_id_followed');
}
在我的 Controller 中,获取 json....
$user = User::find(1);
$user->load('followers');
$user->load('followeds');
$json = $user->toJson();
echo $json;
显然,如果您只想要关注者,只需 $user->load('followers');
关于mysql - Laravel:如何使用 Eloquent orm 接收多维结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19187497/