Я столкнулся с той странной проблемой, с которой я столкнулся, и это действительно сильно меня озадачило. Я использую laravel для создания своего веб-сайта, и я только что написал сценарий для работы в качестве поисковой системы. Он построен, а затем запускается.запрос laravel не возвращает значения - странный pdo
Я просто запустить $query->get()
с $query
есть класс Laravel строитель. Это содержание запроса:
select * from (
select `l`.*, round(
d.distance_unit
* DEGREES(ACOS(COS(RADIANS(p.latitude))
* COS(RADIANS(z.latitude))
* COS(RADIANS(p.longitude - z.longitude))
+ SIN(RADIANS(p.latitude))
* SIN(RADIANS(z.latitude)))),
2
) AS distance, `d`.`radius` from `listings` as `l`
inner join `horses` as `x` on `x`.`id` = `l`.`listing_id`
inner join `suburbs` as `z` on `z`.`id` = `l`.`suburb_id`
inner join (select 50 as radius, 111.045 as distance_unit) as d on 1 = 1
inner join `suburbs` as `p` on `p`.`id` = 1
where (
`z`.`latitude` between
?
and
?
and `z`.`longitude` between
?
and
?
)
) as sub
where `distance` <= `radius`
order by `created_at` desc
limit 9 offset 0
привязки запрос:
[bindings] => Array
(
[0] => Illuminate\Database\Query\Expression Object
(
[value:protected] => p.latitude - (d.radius/d.distance_unit)
)
[1] => Illuminate\Database\Query\Expression Object
(
[value:protected] => p.latitude + (d.radius/d.distance_unit)
)
[2] => Illuminate\Database\Query\Expression Object
(
[value:protected] => p.longitude - (d.radius/(d.distance_unit * COS(RADIANS(p.latitude))))
)
[3] => Illuminate\Database\Query\Expression Object
(
[value:protected] => p.longitude + (d.radius/(d.distance_unit * COS(RADIANS(p.latitude))))
)
)
То есть запрос руководит Laravel. Когда я печатаю sql. но я не могу, чтобы жизнь меня работала, почему она не возвращает значение, когда я запускаю sql в phpmyadmin. (Все, что я делаю, это добавить привязки к вопросительным знакам, а затем запустить в phpmyadmin). Ive приходит к выводу, что PDO laravels должен делать что-то по-другому или присоединяться к ним по-разному. Я использую метод DB::raw()
для каждого из этих значений.
Попробуйте распечатать запрос через print_r (DB :: getQueryLog()), см., Какой запрос генерирует –
laravel, похоже, не печатает точный запрос. вышеуказанный контент - это то, что было получено из 'DB :: getQueryLog()'. Кажется, он просто отображает запрос и привязки отдельно, что является самой большой болью в моей жизни. ха-ха. Я прочитал это. Его из-за ** PDO ** класса. Он отправляет его на сервер sql как запрос и привязки. поэтому его в принципе невозможно определить запрос, который запустил ...:/ –
Я бы предложил попробовать ** Clockwork **. Вам необходимо установить пакет [composer package] (https://github.com/itsgoingd/clockwork) и либо [Расширение Chrome] (https://chrome.google.com/webstore/detail/clockwork/dmggabnehkmmfmdffgajcflpdjlnoemp) (это мое предложение) или [внедряемая версия webapp] (https://github.com/itsgoingd/clockwork-web). Это позволит вам отлаживать что угодно, в том числе ваши SQL-запросы, и отображает точные запросы, выполняемые с базой данных (а не запросы с «?», Где должны быть привязанные данные). – Bogdan