【发布时间】:2015-03-01 13:02:34
【问题描述】:
我的项目中有一个友谊请求模块。其中使用了以下 3 个表:-
- 用户
- 用户配置文件
- 友谊
用户:- Id、slug、姓名、电子邮件、密码
UserProfile :- Id、user_slug、Profile_pic、DOB..等
友谊:-Id、User_slug、Friend_slug、状态
关系:-
用户模型:-
public function Profile(){
return $this->hasOne('UserProfile','user_slug','slug')->first();
}
public function sentFriendshipRequests(){
return $this->hasMany('Friendship','user_slug','slug');
}
public function receivedFriendshipRequests(){
return $this->hasMany('Friendship','friend_slug','slug');
}
用户档案模型:-
public function User(){
return $this->belongsTo('User','user_slug','slug');
}
友谊模型:-
public function receiver(){
return $this->belongsTo('User','friend_slug','slug');
}
public function sender(){
return $this->belongsTo('User','user_slug','slug');
}
目标:-我想显示用户收到的待处理友谊请求列表。
所需数据:- 当前登录用户的所有处于待处理状态的友谊请求以及友谊请求发送者的姓名、Slug、Profile_pic。
我的方法:-
$friendship_requests= Auth::user()->receivedFriendshipRequests();
foreach($friendship_requests as $frnd_req)
{
$sender_user=User::where('slug',$frnd_req->user_slug());
}
是否有任何其他适当的方法可以通过使用 Eloquent 关系方法而不使用连接来获取这些数据。我的意思是如何在一个查询中使用 HasOne 和 HasMany 关系获取数据。
非常感谢任何帮助或建议。
谢谢
【问题讨论】:
标签: php mysql laravel orm eloquent