【发布时间】:2017-12-01 11:31:49
【问题描述】:
我的 Laravel 查询生成器返回一个空集合,而 SQL 字符串本身在 phpmyadmin 中执行时返回正确的记录。
这是我的代码:
$times = Time::join(\DB::raw('(SELECT `ath_id`, `stroke_id`, MIN(time) AS time FROM times GROUP BY ath_id, stroke_id) b'), function($join) {
$join->on('times.ath_id', '=', 'b.ath_id')
->where('times.stroke_id', '=', 'b.stroke_id')
->where('times.time', '=', 'b.time');
})
->where('times.ath_id', '=', $id)
->orderBy('times.stroke_id', 'ASC')
->orderBy('times.date', 'DESC');
dd($times->get());
以下是在 phpmyadmin 中工作的 sql,但不适用于 laravel 查询构建器。另外,这是使用dd($times->toSql());时返回的SQL字符串(其中$times->getBindings()返回['b.stroke_id', 'b.time', '4298584']填写问号?)
SELECT * FROM `times`
INNER JOIN (SELECT `ath_id`, `stroke_id`, MIN(time) AS time
FROM times GROUP BY ath_id, stroke_id) b
ON `times`.`ath_id` = `b`.`ath_id`
ADN `times`.`stroke_id` = b.stroke_id -- ?
AND `times`.`time` = b.time -- ?
WHERE `times`.`ath_id` = 4298584 -- ?
ORDER BY `times`.`stroke_id` asc, `times`.`date` desc
【问题讨论】:
标签: mysql sql laravel laravel-query-builder