laravel查询生成器(group concat)错误

rn0zuynd  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(325)

我有一个用户技能的集合,但我需要的是得到一个数组,我尝试了这个只有技能

$builder->where('job_id', $value)
->join('users', 'job_applicants.user_id', '=', 'users.id')
->join('user_skills', 'users.id', '=', 'user_skills.user_id', function ($join){
    $join->selectRaw("GROUP_CONCAT(user_skills.skill, ', ')");
})
->groupBy('job_applicants.job_id')
->get();

异常消息: Object of class Closure could not be converted to string

a7qyws3x

a7qyws3x1#

连接闭包应该是表名之后的第一个也是唯一一个参数。

->join('user_skills', function ($join) {
    $join->on('users.id', '=', 'user_skills.user_id')
         ->selectRaw("GROUP_CONCAT(user_skills.skill, ', ')");
});

然而,join闭包中的selectraw并没有什么意义。从逻辑上讲,这不是您选择数据的地方。您已经联接了表,您的select语句属于主查询,它不属于包含在联接中的语句,如下所示:

$builder->selectRaw("job_applicants.*, GROUP_CONCAT(user_skills.skill, ', ')")
    ->where('job_id', $value)
    ->join('users', 'job_applicants.user_id', '=', 'users.id')
    ->join('user_skills', 'users.id', '=', 'user_skills.user_id')
    ->groupBy('job_applicants.job_id')
    ->get();

相关问题