mysql - Laravel:如何使用 Eloquent orm 接收多维结果集

标签 mysql sql laravel laravel-4 eloquent

我有两个表:用户和关注者。

用户

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 吗?怎么办?

谢谢您并致以诚挚的问候
菲尔

最佳答案

找到了更好的方法。我们要做的是创建用户表到用户表的多对多关系,并使用您的关注者表作为数据透视表。我还做了一些额外的工作,以便您可以查看用户的关注者和关注者。

不幸的是,你的表格设置方式对我来说没有多大意义,所以我的关注者表格看起来像iduser_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/

相关文章:

php - 将数据库中的值放入 '$string' 中

php - Laravel-多个查询

mysql - Laravel 加入 3 个表

php - Laravel : How to Update multiple Select option with select2. js

Mysql跨库外键

mysql - 如何在mysql中建立排名?

PHP session 超时为 0,但 session 仍将过期

sql - 将时间戳分钟设置为特定值

php - 如果项目有许多(动态)属性,则多个左连接

sql - 如何将给定领域的年份范围拆分为各个年份?