Laravel 5.2 Eloquent ORM 从 3 个表中获取数据
Posted
技术标签:
【中文标题】Laravel 5.2 Eloquent ORM 从 3 个表中获取数据【英文标题】:Laravel 5.2 Eloquent ORM to get data from 3 tables 【发布时间】:2021-01-19 09:19:33 【问题描述】:我有以下表格。用户、user_details 和 client_teams。每个用户都有一个详细信息,每个用户可以有多个团队。用户架构: id、姓名、电子邮件、parent_user_id 用户详细信息: id、user_id、client_team_id 客户团队: id、user_id、team_name、状态 在 user_model 我有以下关系:
public function userDetails()
return $this->belongsTo('App\Models\UserDetails','id','user_id');
public function clientTeamList()
return $this->hasMany('App\Models\ClientTeams','user_id','id');
In user_details model i have the following relation:
public function clientMemberTeam()
return $this->belongsTo('App\Models\ClientTeams','client_team_id');
我想显示具有特定团队 ID 并由特定用户创建的用户列表。我正在使用的查询是这样的:
$userCollections=Users::where([
['users.status','!=','DELETE'],
['users.parent_user_id',$clientId],
['users.id','!=',$loginUser->id]
])
->with([
'userDetails'=>function($query)
$query->where('client_team_id',1);
]);
这是给我这个用户的所有记录,而我想通过 client_team_id 和 user_id 匹配
【问题讨论】:
您至少需要向我们展示您的尝试,即使它不起作用。关系的文档位于 laravel.com/docs/5.2/eloquent-relationships 我建议您阅读该文档,特别是说:“查询关系存在”的部分 你能给我看看所有的模型吗 @Boni,我已经用代码块编辑了问题 @ShamikRoy 请查看我的回答 【参考方案1】:您需要使用 whereHas 和 orWhereHas 方法在您的 has 查询中添加“where”条件。
请关注https://laravel.com/docs/8.x/eloquent-relationships
$userCollections = Users::where([['users.status', '!=', 'DELETE'],
['users.parent_user_id', $clientId],['users.id', '!=', $loginUser->id]
])
->whereHas('userDetails' => function ($query)
$query->where('client_team_id', 1);
)->get();
【讨论】:
以上是关于Laravel 5.2 Eloquent ORM 从 3 个表中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 pluck() 来自 Eloquent 模型集合的多个属性