mysql - Doctrine2和where sql语句

标签 mysql sql symfony doctrine-orm

我有一个这样写的学说查询:

    $qb = $this->createQueryBuilder('u');

    $qb
        ->leftJoin('u.relatedEventTypes', 'relatedEventTypes')
        ->leftJoin('u.relatedGenres', 'relatedGenres')
        ->where(
            $qb->expr()->eq('u.type', ':userType')
        )
        ->setParameter('userType', 'dj')
    ;

我想再添加一个 where 语句,用于查找两个坐标之间的距离并处理该数据。查询看起来像这样:

    $qb
       ->andWhere(
          '( 6371 * acos( cos( radians(lat_placeholder) ) * cos( radians(lat_placeholder) ) * cos( radians(lng_placeholder) - radians(lng_placeholder) ) +
           sin( radians(lat_placeholder) ) * sin( radians(la t_placeholder) ) ) ) AS distance
           HAVING distance < distanceToTravel_placeholder)'
     ;

我找不到一种方法来完成这项工作,这意味着我不知道如何用占位符编写它,所以我可以从一开始就使用查询中的变量(例如 u.locLat、u.distanceToTravel 等) .可能吗?

最佳答案

我认为 doctrine 无法处理所有函数,如 acos、cos 和弧度。你应该看看 Doctrine DBAL或学说 native queries其中 DBAL 看起来像 PDO, native 查询为您提供了使用普通 mysql 查询填充实体的可能性。

关于mysql - Doctrine2和where sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561459/

相关文章:

php - 在 sql 数据库中制作唯一列 id 的首选方法

php - Symfony 4 - JSON 身份验证不起作用

php - 如何使用 PHPUnit 测试 Doctrine Cache 代码

PHP 作为 Node.js 服务器的客户端

mysql - 如何删除 mysql 查询中的尾随或前导字符?

php - 将字符串添加到除最后一个之外的所有循环项目

mysql - ' ' 即单引号空间单引号在sql中如何工作?

MySQL如何获取项目的总和

php - 使用准备好的语句进行 SQL 注入(inject)

sql - 如何在postgres中加入空值填充行