php - 使用 MIN 函数的 Symfony 最低用户出价?

标签 php mysql sql symfony doctrine-orm

我想获得用户对每个产品 ID 的最低出价。

return $this->getEntityManager()
        ->createQuery('
            SELECT PARTIAL b.{Id, MIN(amount) as amount, currency}, PARTIAL p.{id, firstName, lastName}
            FROM  AppBundle:Bid b
            LEFT JOIN b.provider p
            WHERE b.product in (:product)
            AND b.status = :status
            GROUP BY b.product
            ORDER BY b.amount'
        )
        ->setParameter('product', $ids)
        ->setParameter('status', 'active')
        ->getResult()
    ;

出现以下错误

[Syntax Error] line 0, col 42: Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_CURLY_BRACE, got '('

我在 SQL 中运行了完全相似的查询,它运行良好,但我不确定如何在 doctrine 查询生成器中实现相同的查询。

最佳答案

如果您希望用户 mysql 函数具有学说查询,您必须添加学说 mysql 函数的扩展,或者您可以使用 native 查询。我在下面添加了 native 查询:

use Doctrine\ORM\Query\ResultSetMapping;


$rsm = new ResultSetMapping();
$rsm->addEntityResult('AppBundle:Bid', 'b');
$rsm->addFieldResult('b', 'Id', 'Id');
$rsm->addFieldResult('b', 'amount', 'amount');
$rsm->addFieldResult('b', 'currency', 'currency');
...
$sqlQuery = "SELECT b.Id, MIN(b.amount), b.currency, p.firstName, p.lastName
        FROM  AppBundle:Bid b
        LEFT JOIN b.AppBundle:Provider p
        WHERE b.AppBundle:Product in (:product)
        AND b.status = :status
        GROUP BY b.product
        ORDER BY b.amount";
$query = $em->createNativeQuery($sqlQuery, $rsm)
     ->setParameter('product', $ids)
     ->setParameter('status', 'active');
$query->getResult();

如果有问题请告诉我

关于php - 使用 MIN 函数的 Symfony 最低用户出价?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604095/

相关文章:

C# LINQ - 将行拆分为两行

php - 如何使用php在根目录上方创建文件夹

php - 如何在 PHP 中添加用于分页的滚动条?

php - 正则表达式替换中的换行符

sql - 重命名所有列名以在大查询中加入

带有数据循环的 SQL Server 2005 递归查询 - 这可能吗?

php - MySql 获取产品搜索结果中的类别数

用于日期时间选择器的 C# HttpWebRequest

mysql - sql中的条件连接

mysql - 使用两个单独的类别表优化数据库