【问题标题】:Laravel join using elquentLaravel 使用 eloquent 加入
【发布时间】:2022-10-04 21:58:33
【问题描述】:

如何使用 Eloquent 执行此 SQL,其中我有使用 users 表的用户模型,该表在 UserData user_datas 表上有许多关系。

SELECT users.user_id
   , SUM(CASE WHEN user_datas.code_type = 'P' THEN 1 ELSE 0 END) AS Paused
   , SUM(CASE WHEN user_datas.code_type = 'A' THEN 1 ELSE 0 END) AS Active
FROM users
    JOIN user_datas on users.user_id = user_datas.user_id
GROUP BY users.user_id
ORDER BY users.user_id ASC ;

【问题讨论】:

    标签: sql laravel eloquent


    【解决方案1】:

    步骤1:请确保正确声明用户模型。

    class User extends Model 
    {
       public function userDatas(){
             return $this->hasMany(UserData::class, 'user_id');
       }
    
    }
    

    第2步:请确保正确声明 UserData 模型。

    class UserData extends Model 
    {
    public function user(){
             return $this->belongsTo(User::class, 'user_id');
       }
    }
    

    第三步:请编辑控制器中的代码。

    User::select('user_id')->withSum(
        ['userDatas' => function($query) {
            $query->where('code_type ', 'P');
        }],
        'Paused'
         )
        ->withSum(
        ['userDatas' => function($query) {
            $query->where('code_type ', 'A');
        }],
        'Active'
        )
        ->groupBy('user_id')
        ->orderBy('user_id', 'DESC')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-21
      • 2014-07-07
      • 2014-04-17
      • 2018-08-16
      • 2022-01-13
      • 2021-07-03
      • 2022-01-25
      • 1970-01-01
      相关资源
      最近更新 更多