GVKun编程网logo

在Doctrine2查询构建器中链接orX(查询构建器sql语句错误)

29

关于在Doctrine2查询构建器中链接orX和查询构建器sql语句错误的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于asp.net–基于Web的可视化查询构建器、Doctrine2查询

关于在Doctrine2查询构建器中链接orX查询构建器sql语句错误的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于asp.net – 基于Web的可视化查询构建器、Doctrine 2查询生成器ABS函数、Doctrine ORM 查询构建器获取键值对、doctrine-orm – doctrine2 DQL子查询1行限制等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

在Doctrine2查询构建器中链接orX(查询构建器sql语句错误)

在Doctrine2查询构建器中链接orX(查询构建器sql语句错误)

我必须在添加子句之后立即将OR表达式动态地添加到所返回的查询构建器中。我找不到任何合适的方式来做到这一点,我才刚刚开始学习Doctrine。getListQueryBuilder``where

我如何“链接”给定数量的orX并将其添加到我的构建器中?

public function getListQueryBuilder($ownerId){    $qb = $this->createQueryBuilder(''t'');    return $qb        ->where($qb->expr()->eq(''t.user'', '':user''))        ->setParameter(''user'', $ownerId);}$builder = getListQueryBuilder(4);// $ORs is a dynamically builded array, here is just an example$ORs = array();$ORs[] = $builder->expr()->like("t.name", ''my name'');$ORs[] = $builder->expr()->like("t.description", ''desc'');// Adding ORs to the builder$builder->andWhere($builder->expr()->orX(/* here */));

答案1

小编典典

您可以检查此解决方案:

$orX = $builder->expr()->orX();foreach($ORs as $or) {    $orX->add($or);}$builder->andWhere($orX);

asp.net – 基于Web的可视化查询构建器

asp.net – 基于Web的可视化查询构建器

我在 http://ajax.easyquerydemo.com/之后的视觉查询构建器之后.我使用ASP.NET而不是MVC,而不是基于WebForms的链接.如果有人知道类似的工具,这在很大程度上与平台无关,请让我知道.

解决方法

正在寻找同样的事情,遇到这个 http://devtools.korzh.com/query-builder-component/这看起来非常有趣的我…

Doctrine 2查询生成器ABS函数

Doctrine 2查询生成器ABS函数

这项工作:

    $qb = $this->em->createQueryBuilder();    $qb->select("abs(u.code) as code")       ->from("User", "u")       ->orderBy("code","ASC")       ->getQuery()       ->getArrayResult();

这不起作用:

    $qb = $this->em->createQueryBuilder();    $qb->select("u.code")       ->from("User", "u")       ->orderBy("abs(u.code)","ASC")       ->getQuery()       ->getArrayResult();

错误:

语法错误]行0,列118:错误:预期的字符串结尾,得到了’(’

本地学说功能abs仅对语句的选定部分起作用,而对部分命令不起作用。

Obs:

1-)我避免使用NativeQuery。

2-)u.code是mysql上的varchar fild,需要是varchar(有时是数字,有时是字符串),我需要在数字情况下像数字一样排序。

有帮助吗?

答案1

小编典典

解决的atma Thank’s abs()realy不能直接在orderBy中使用,而只能作为别名使用。

溶解度

SELECT field1,field2,abs(field3) AS abs_field3 FROM table ORDER BY abs_field3 ASC

Obs:这是一个理论上的限制,而不是mysql的限制,mysql会部分按顺序直接支持abs。

Doctrine ORM 查询构建器获取键值对

Doctrine ORM 查询构建器获取键值对

如何解决Doctrine ORM 查询构建器获取键值对?

我在实体存储库中有以下代码:

$rows = $this->createqueryBuilder(''t'')
    ->select([''t.idColumn'',''t.valueColumn''])
    ->where(''t.foo = :foo'')
    ->orderBy(''t.idColumn'',''ASC'')
    ->setParameter(''foo'',$foo)
    ->getQuery()
    ->getArrayResult(); // This returns [[idColumn => ...,valueColumn => ...],...]
$data = [];

foreach ($rows as $row) {
    $data[$row[''idColumn'']] = abs($row[''valueColumn'']); // Remapping to [id => value]
}

return $data;

有什么办法可以在本地摆脱自定义重映射?我知道你可以使用 indexBy 参数,但这只能让我得到正确的键而不是值。

附言我知道 array_column(),但这是我每次都必须执行的额外步骤,更不用说它不适用于实体具有的方法。

P.P.S.这不是在使用 Symfony。

解决方法

这似乎不是 QueryBuilder 中实现的功能,但是 fetchAllKeyValue 已在 DBAL 2.11 中添加到 Connection 对象中。

Commit、usage

doctrine-orm – doctrine2 DQL子查询1行限制

doctrine-orm – doctrine2 DQL子查询1行限制

我想做一个DQL查询,如:
$dql = "select p
        from AcmeDemoBundle:UserTypeA p 
        where p.UserTypeB = :id
        and (
                 select top 1 r.boolean
                 from AcmeDemoBundle:Registry r
             ) 
        = true";

但似乎TOP 1它不是doctrine2中的有效函数.

我无法弄清楚如何将子查询的结果限制为一行.

解决方法

DQL不支持子查询的限制,也不支持LIMIT和OFFSET.

见http://www.doctrine-project.org/jira/browse/DDC-885

今天关于在Doctrine2查询构建器中链接orX查询构建器sql语句错误的介绍到此结束,谢谢您的阅读,有关asp.net – 基于Web的可视化查询构建器、Doctrine 2查询生成器ABS函数、Doctrine ORM 查询构建器获取键值对、doctrine-orm – doctrine2 DQL子查询1行限制等更多相关知识的信息可以在本站进行查询。

本文标签: