Laravel의 쿼리 작성기를 사용하여 아무 결과도 얻지 못하는 문제를 해결하려고하지만 동일한 쿼리를 실행할 때 PHPMyAdmin을 사용하여 getQueryLog에서 가져온 결과가 예상됩니다.Laravel 쿼리 작성기 반환 빈 직접 SQL 결과를 반환합니다
내 쿼리 빌더 :
DB::table('likes')
->join('geoip_blocks', function($join)
{
$join->where("ip", ">=", "block_start")
->where("ip", "<=", "block_end");
})
->join('geoip_locations', "geoip_locations.id", "=", "location_id")
->select(array("country", DB::raw("count(*) as {$this->aggregate}")))
->groupBy('country')->get();
querylog의 출력 :
array (size=3)
'query' => string 'select `country`, count(*) as count from `likes` inner join `geoip_blocks` on `ip` >= ? and `ip` <= ? inner join `geoip_locations` on `geoip_locations`.`id` = `location_id` group by `country`' (length=196)
'bindings' =>
array (size=2)
0 => string 'block_start' (length=11)
1 => string 'block_end' (length=9)
'time' => float 2.69
내가 phpMyAdmin을 체결 쿼리 :
select `country`, count(*) as count from `likes` inner join `geoip_blocks` on `ip` >= block_start and `ip` <= block_end inner join `geoip_locations` on `geoip_locations`.`id` = `location_id` group by `country`
내가 위의 쿼리가 매우 비효율적 알고있다. 이것은 단지 개념의 증명을위한 것이 었습니다. 그래서 더 이상 신경 쓰지 않는 이유가 있습니다. 저는 모호성과 explicitness의 다양한 학위를 시도했지만 아무 소용이 없습니다. 또한 두 번째 조인을 제거하고 location_id를 얻으려고 시도했습니다. 다시 성공하지 못했습니다.
도움을 주시면 대단히 감사하겠습니다.
어째서 지구에서 당신은 사색을 사용하지 않습니까 ??? – MightyPork
Eloquent와 같은 거래. Eloquent가 작동하지 않기 때문에 쿼리 빌더를 사용해 보았습니다! – pragmatist1
그 밖의 모든 것이 실패 할 경우 항상 바운드 매개 변수가있는 오래된 PDO를 사용할 수 있습니다. – MightyPork