laravel查询不返回值 - 奇怪的pdo

时间:2015-02-09 12:43:26

标签: php mysql laravel pdo builder

我遇到了一个我遇到的奇怪问题,它真的让我难过。我正在使用laravel来构建我的网站,我刚刚编写了一个脚本来充当搜索引擎。它是构建然后运行的。


我只是运行$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。但我不能为我的生活解决为什么它在phpmyadmin中运行的sql时没有返回值。 (我只是将绑定添加到问号,然后在phpmyadmin中运行)。我得出结论,laravels PDO必须做出不同的事情或以不同的方式加入它们。我对每个值使用DB::raw()方法。

1 个答案:

答案 0 :(得分:2)

我设法通过为mysql服务器配置my.ini来找到我的问题。我在general_log_file = "queries.log" 下的[mysqld]下了。然后在 mysql 中运行SET global general_log = 1;


这向我展示了我的查询问题。即使我使用DB::raw(),绑定也会插入引号中。所以我只想找到一种方法来删除它们。