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 模型集合的多个属性

Laravel 5.2,Eloquent,将表 1 连接到表 2 并带上表 2 的 MAX 列

Laravel 5.2 Eloquent 主键作为多键

Laravel Eloquent ORM 的本地作用域

Laravel Eloquent ORM 关系命名约定

Laravel Eloquent ORM--整理(未转)