Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在select for Doctrine2中将比较用作别名_Mysql_Doctrine_Doctrine Orm - Fatal编程技术网

Mysql 在select for Doctrine2中将比较用作别名

Mysql 在select for Doctrine2中将比较用作别名,mysql,doctrine,doctrine-orm,Mysql,Doctrine,Doctrine Orm,在Doctrine2中尝试这样做: ...->createQuery('SELECT m.id, (m.status != 1) as verified... 但这会抛出一个错误——如果我去掉括号,我会得到另一个错误。我如何实现这种m.status比较 谢谢查看以下内容: 使用表达式方法,您可以执行以下操作: $qb = $this->entityManager->createQueryBuilder(); $query = $qb->select('m.id')

在Doctrine2中尝试这样做:

...->createQuery('SELECT m.id, (m.status != 1) as verified...
但这会抛出一个错误——如果我去掉括号,我会得到另一个错误。我如何实现这种m.status比较

谢谢

查看以下内容:

使用表达式方法,您可以执行以下操作:

$qb = $this->entityManager->createQueryBuilder();

$query = $qb->select('m.id')
            ->from('Entities\MyEntity', 'm')
            /*neq() is the "not equal" comparison function*/
            ->where($qb->expr()->neq('m.status', $someValue)),
            ->getQuery();   

您可以使用此处提出的解决方案:

使用实体时,请记住,添加选择将使查询为每个结果返回一个数组:

$res = $em->createQueryBuilder()
  ->from('BlogPost', 'p')
  ->select('p')
  ->addSelect('(2+3) AS dummy')
  ->getQuery()->getResult();
迭代$res将返回一个数组:

foreach($res as $mixed){
  echo get_class($mixed[0]); //$mixed[0] contains the BlogPost
  echo $mixed['dummy']; //displays the dummy result (5)
}

原则2不支持SELECT条款中的这些比较(至少不符合2.3,不确定是否符合2.4)

您可以使用大小写表达式作为解决方法:

SELECT m.id, CASE WHEN m.status != 1 THEN 1 ELSE 0 END AS verified ...
或:

如果需要对ORDER BY子句(或类似的内容)进行
verified
,但结果中实际上不需要它,则可以使用隐藏表达式:

SELECT m.id, CASE WHEN m.status = 1 THEN 0 ELSE 1 END AS HIDDEN verified ...

另一种完全不同的解决方案是编写一个.

我不想用条件过滤数据-只是希望我的结果集有一个基于返回结果的布尔别名。这在sql或条令1中非常简单,但在条令2中,很容易在其中添加条件。我和原始海报的问题是在选择部分使用此表达式。例如,此评论的作者和问题的作者是否相同?将结果放入“is_original_poster”。使用addSelect()与将其直接放入原始select()或createQuery()中相同。问题在于没有正确解析比较,没有添加更多的选择部分。我有完全相同的问题。在DQL中,比较似乎没有正确解析。谢谢!很高兴知道。
SELECT m.id, CASE WHEN m.status = 1 THEN 0 ELSE 1 END AS HIDDEN verified ...