php - 奇怪的问题 Doctrine/Symfony 请求

标签 php mysql symfony doctrine-orm

我在处理一个简单的请求时遇到了一些麻烦,他们的行为非常奇怪:

$villes = $this
    ->createQueryBuilder('v')
    ->getQuery()
    ->getResult();

foreach ($villes as $value) {
    $v = $this->_em->createQuery('
        SELECT v
        FROM Btp\UserProBundle\Entity\Ville v
        WHERE GEO(v.lat = :latitude, v.lng = :longitude) <= :r
        ')
    ->setParameter('latitude', $lat)
    ->setParameter('longitude', $lng)
    ->setParameter('r', $value->getRayon()) // 20
    ->getResult();
    }

问题是,当我在 setParam 中将“20”硬编码为“r”时,查询会返回正确的答案。 但是当我传递变量 $value->getRayon() (也等于 2 20)时,请求什么也没找到。我不明白这怎么可能......

编辑:通过查询生成 SQL:

string(341) "
    SELECT v0_.id AS id0, v0_.nom AS nom1, v0_.lat AS lat2, v0_.lng AS lng3, v0_.rayon AS rayon4, v0_.slug AS slug5, v0_.nb_pro AS nb_pro6
    FROM villes v0_ 
    WHERE ((ACOS(SIN(? * PI() / 180) * SIN(v0_.lat * PI() / 180) + COS(? * PI() / 180) * COS(v0_.lat * PI() / 180) * COS((? - v0_.lng) * PI() / 180)) * 180 / PI()) * 60 * 1.1515 * 1.609344) <= ?
"

EDIT2:好的,所以我用工具栏找到了查询,你们都是对的,占位符有很好的值(value):

SELECT 
v0_.id AS id0, 
v0_.nom AS nom1, 
v0_.lat AS lat2, 
v0_.lng AS lng3, 
v0_.rayon AS rayon4, 
v0_.slug AS slug5, 
v0_.nb_pro AS nb_pro6 
FROM 
villes v0_ 
WHERE 
(
(
  ACOS(
    SIN(
      ? * PI() / 180
    ) * SIN(
      v0_.lat * PI() / 180
    ) + COS(
      ? * PI() / 180
    ) * COS(
      v0_.lat * PI() / 180
    ) * COS(
      (? - v0_.lng) * PI() / 180
    )
  ) * 180 / PI()
 ) * 60 * 1.1515 * 1.609344
) <= ?
Parameters: [44.8769806, 44.8769806, -0.5519386, 20] 

但是找到任何结果!!!当我在硬核中写下 20 时,就可以了!我不明白发生了什么......

最佳答案

好吧,这个奇怪的行为来自缓存/cookie。之前我从数据库进行了迁移,该数据库已将字段 rayon varchar 更改为 int。所以清除缓存后,一切正常。

抱歉,这么愚蠢的回答打扰了您。

谢谢大家!

关于php - 奇怪的问题 Doctrine/Symfony 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243814/

相关文章:

php - 将字符串保存到数据库

php - SonataMediaBundle 的公共(public)和私有(private)媒体上传到不同的文件夹(网络和私有(private))

javascript - 如果从 web-worker 使用 Xdebug 不会停止?

php - 从 Blob 中提取后,如何使用 URL 使图像可点击

php - PHP页面如何从数据库表中获取数据

mysql - 使用 SELECT 语句删除查询

php - 调整 mysql/php 代码以补偿服务器时区

MySQL UNIQUE约束多列条件

ios - 从 ios 应用程序到 symfony2 web 应用程序的登录和管理 session

symfony - Doctrine2 批量插入