【问题标题】:Laravel 5.2 Eloquent ORM to get data from 3 tablesLaravel 5.2 Eloquent ORM 从 3 个表中获取数据
【发布时间】: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 请查看我的回答

标签: laravel eloquent


【解决方案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();

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2015-03-23
    • 2015-01-28
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多