php – Laravel SQL查询返回错误的结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel SQL查询返回错误的结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1489字,纯文字阅读大概需要3分钟。
内容图文
![php – Laravel SQL查询返回错误的结果](/upload/InfoBanner/zyjiaocheng/903/46810a2b617b46e6ad0b52f4ed5f099a.jpg)
我有这个带有Laravel Query构建器的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'));
这会返回错误的结果,其中来自同一“查询”构建器的“生成”查$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.*
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 ON `candidates`.`id` = `mj`.`candidate_id`
WHERE (`mj`.`stage` < ? OR `mj`.`stage` IS NULL)
GROUP BY `candidates`.`id`
LIMIT 10 OFFSET 0
正确的结果
Laravel返回结果
解决方法:
仔细检查如何绑定值.你可能会绑定与Laravel不同的值.
这个链接也很有用:Different results using same query with DB::raw and Eloquent
内容总结
以上是互联网集市为您收集整理的php – Laravel SQL查询返回错误的结果全部内容,希望文章能够帮你解决php – Laravel SQL查询返回错误的结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。