小编Roo*_*har的帖子

Laravel SQL查询返回错误结果

我有使用Laravel查询构建器的此SQL查询

$this->candidate->select('candidates.*', 'candidates.id as candidate_id', 'mj.interviewScheduledDate')
            ->join('candidates_positions', 'candidates_positions.candidate_id', '=', 'candidates.id')
            ->leftJoin(DB::raw("(SELECT mat1.* FROM matches AS mat1
                                    JOIN (SELECT candidate_id, MAX(id) AS id FROM matches GROUP BY candidate_id) 
                                    AS mat2 ON mat1.candidate_id = mat2.candidate_id AND mat1.id = mat2.id)
                                    AS mj"), function ($join) {
                $join->on("candidates.id", "=", "mj.candidate_id");
            })
            ->where(function ($query) {
                $query->where("mj.stage", "<", "4")
                    ->whereNull('mj.stage', "or");
            })
            ->groupBy('candidates.id')

            ->paginate(Config::get('match.pagination'));
Run Code Online (Sandbox Code Playgroud)

这将返回错误的结果,其中从同一“查询”构建器生成的查询将返回正确的结果。$candidate->toSql()返回以下查询。甚至尝试删除group by语句。没用

SELECT
      `candidates`.*,
      `candidates`.`id` AS `candidate_id`,
      `mj`.`interviewScheduledDate`
    FROM `candidates`
      INNER JOIN `candidates_positions` ON `candidates_positions`.`candidate_id` = `candidates`.`id`
      LEFT JOIN (SELECT mat1.* …
Run Code Online (Sandbox Code Playgroud)

php mysql laravel-5 laravel-5.1

5
推荐指数
1
解决办法
678
查看次数

标签 统计

laravel-5 ×1

laravel-5.1 ×1

mysql ×1

php ×1