Mysql Laravel:如何使用雄辩的orm接收多维结果集

Mysql Laravel:如何使用雄辩的orm接收多维结果集,mysql,sql,laravel,laravel-4,eloquent,Mysql,Sql,Laravel,Laravel 4,Eloquent,我有两个表:用户和追随者 用户 id,用户名 1,foo 2,bar 3、测试 追随者 id,用户id跟随,用户id跟随 1,2,1 2、3、1 这意味着用户“bar”和“test”跟随用户“foo” 我想要一个结果集,如: [ id:“foo”, 用户名:“bar”, 追随者:[“酒吧”,“测试”] ] 或者作为JSON对象。 有雄辩的ORM能做到这一点吗?用户和跟随者有很多关系,跟随者属于用户。 是否有可能只获取追随者的用户名而获取他们之间的关系? 我还尝试通过原始sql查询来实现这一点。但

我有两个表:用户和追随者

用户 id,用户名
1,foo
2,bar
3、测试

追随者 id,用户id跟随,用户id跟随
1,2,1
2、3、1

这意味着用户“bar”和“test”跟随用户“foo”

我想要一个结果集,如:
[
id:“foo”,
用户名:“bar”,
追随者:[“酒吧”,“测试”]
]

或者作为JSON对象。 有雄辩的ORM能做到这一点吗?用户和跟随者有很多关系,跟随者属于用户。 是否有可能只获取追随者的用户名而获取他们之间的关系? 我还尝试通过原始sql查询来实现这一点。但是使用DB::select(DB::raw($query));给我一个非多维对象,这意味着“追随者”只有“酒吧”,而不是两个追随者

那么,获得多维结果集的最佳方法是什么? 我还能依靠雄辩吗?怎么做

谢谢你,并致以最良好的问候

菲尔找到了一个更好的方法。我们将要做的是创建一个多对多关系,从users表到users表,并使用followers表作为透视表。我还做了一些额外的工作,以便您可以查看用户的followeds和followers

不幸的是,您设置表的方式对我来说没有多大意义,因此我的followers表看起来像
id
user\u id
follow\u id
。这样,通过在
user\u id
列中查找用户的id,我可以很容易地找到用户在跟踪谁,通过在
follow\u id
列中查找他的用户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');
}
在我的控制器中,要获取json

$user = User::find(1);
$user->load('followers');
$user->load('followeds');
$json = $user->toJson();
echo $json;

显然,如果您只是想要追随者,只需
$user->load('followers')

我需要在toJson前面加“->get()”。但是,它不起作用。我知道结果集中有“用户”列。但是我没有用户名。但这是正确的。我试了一点,但没有找到解决办法。也许还需要将where子句附加到select子句?你觉得怎么样。我已经修改了我的答案,我刚刚建立了一些东西,它似乎工作得很好。我刚刚发现你的身份证的方式与我的相反。因此,我的
用户id
将与您的
用户id\u followed
对应,我的
用户id\u followed
将与您的
用户id\u followed
对应。我将更新答案以与您的表一起使用。非常感谢!是的,我的专栏的命名可能会令人困惑。。跟踪的人是user_id_follow,跟踪的人是user_id_follow(user_id)),跟踪的人是user_id(follow_id)。我有一个小的后续问题:是否可以将resultset(仅仅是追随者)减少为用户名?否则,我将为每个关注者获取完整的用户对象。我已经尝试过,但似乎无法使用
select()
。感觉应该有一种方法可以用雄辩的口才做到这一点。我能想到的唯一解决方案是循环遍历users对象,并将
$user->followers
设置为
$user->followers->username