首页 > 解决方案 > 将 MySQL 查询转换为 Symfony 原则

问题描述

我有这个MySQL查询,我想将其转换为 Doctrine 理解的查询。

SELECT name from users where project = 10 and (classification = 12 
or classification is null)

所以我试图在 Doctrine 中转换它,但它不起作用。

$query->AndWhere('users.classification = :classification');
$query->setParameter(':classification', $classification);
$query->orWhere('users.classification = :classification');
$query->setParameter(':classification', null);

我尝试使用$query->expr()我没有成功的表达方式

标签: phpmysqlsymfonydoctrine

解决方案


要将括号中的多个 where 语句分组,您可以使用orxandx

$queryBuilder->andWhere($queryBuilder->expr()->orX(
    'users.classification = :classification',
    'users.classification IS NULL'
))
->setParameter(':classification', $classification);

或者用教义表达:

$queryBuilder->andWhere($queryBuilder->expr()->orX(
    $queryBuilder->expr()->eq('user.classification', ':classification'),
    $queryBuilder->expr()->isNull('users.classification')
))
->setParameter(':classification', $classification);

教义文档:https ://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/query-builder.html#the-expr-class


推荐阅读