我正在设计一个玩具项目,这是Laravel-4中的推特克隆。我在下面的模型中有以下关系:
<?php
class Follower extends Eloquent {
protected $guarded = array();
public static $rules = array();
public function user_follower()
{
return $this->belongsTo('User','to_user_id');
}
public function user_following()
{
return $this->belongsTo('User','from_user_id');
}
}
用于了解用户的以下列表的查询返回Json对象,如下所示:
[
{
"id": 2,
"from_user_id": 1,
"to_user_id": 2,
"created_at": "2013-12-15 17:40:26",
"updated_at": "2013-12-15 17:40:26",
"user_follower": {
"id": 2,
"full_name": "Shyanne Champlin",
"username": "shyanne718",
"created_at": "2013-12-15 14:28:53"
}
},
{
"id": 4,
"from_user_id": 1,
"to_user_id": 4,
"created_at": "2013-12-15 17:40:26",
"updated_at": "2013-12-15 17:40:26",
"user_follower": {
"id": 4,
"full_name": "Vinnie Lang",
"username": "vinnie398",
"created_at": "2013-12-15 14:28:54"
}
}
]
对于知道用户关注者的其他查询,结果“user_follower”变为“user_following”。所以我的问题是我如何为两个关系定义相同的函数名称,因此它为“跟随用户”和“关注者”返回具有相同“密钥”名称的用户“值”。
答案 0 :(得分:1)
我刚刚对你的设置进行了广泛的测试,这似乎在我的工作中完全正常。
我能想到三件事:
with
方法的错误定义。应该是:Follower::with(array('user_follower', 'user_following'))->get();
我从不在我的方法命名中使用下划线_
。我假设Laravel期待userFollower()
和userFollowing()
,同时仍然在JSON结果中返回下划线。
你的Laravel发行版中的一个错误。只需运行composer update
即可。我刚刚运行它仍然有效,所以至少目前的发行版工作正常。 (我在composer.json中使用"laravel/framework": "4.1.*",