【发布时间】:2015-10-02 05:27:34
【问题描述】:
我正在尝试为我的应用程序创建一个 youtube 风格的订阅模型。到目前为止,我已经取得了少量成功,即您可以关注其他用户,并将谁在关注谁存储在数据库中。但是,我无法检索当前用户关注的人员列表。
数据库:
用户表(id、first_name、last_name、email、密码、令牌、时间戳)
订阅表(id、user_id、subscriber_id、时间戳)
用户模型:
public function subscriptions()
{
return $this->belongsToMany('App\User', 'subscriptions', 'user_id',
'subscriber_id')->withTimestamps();
}
public function subscribers()
{
return $this->belongsToMany('App\User', 'subscriptions', 'subscriber_id',
'user_id')->withTimestamps();
}
我正在使用此代码检索所有当前用户订阅(也就是他们关注的人)
$subscriber = Auth::user()->id;
$user = User::find($subscriber);
$userids = $user->subscriptions->lists('user_id');
return $userids;
现在,此代码当前返回一个空值。在进一步调查中,这是有道理的,因为正在运行的查询不正确
SQL 查询:
select `user_id` from `users` inner join `subscriptions` on `users`.`id` = `subscriptions`.`subscriber_id` where `subscriptions`.`user_id` = 14
我目前的设置是试图寻找错误的东西。
如果用户 1 关注用户 2、3 和 4,那么我的代码应该返回 2、3 和 4。
有人可以帮助纠正我的关系设置或我正在运行的代码吗?它应该根据当前用户的subscriber_ID 在订阅表中查找user_id。
【问题讨论】:
标签: php laravel orm eloquent laravel-5