gpt4 book ai didi

symfony2 : how to use group_concat in QueryBuilder

转载 作者:行者123 更新时间:2023-12-02 04:27:15 27 4
gpt4 key购买 nike

我有一个名为“Location”的嵌套集(使用 Gedmo 树)实体。实体“Appartment”具有 location_id 以及我需要做什么来映射称为“路径”的标量值以返回所有公寓的查询。

在 Doctrine1 中,我有以下代码:

/**
* Add "path" to each element
*
* @param Doctrine_Query $query
* @param string $separator
*/
protected function addScalar_path(Doctrine_Query $query, $separator=", ")
{
$subquery = "k99.root_id=o.root_id AND k99.lft<=o.lft AND k99.rgt>=o.rgt AND k99.level<=o.level" ;

$query->addSelect("(SELECT GROUP_CONCAT(k99.name ORDER BY k99.level SEPARATOR '$separator') FROM Location k99 WHERE $subquery) AS path") ;
}

注意:“o”别名用于主查询。这段代码将允许我使用

{foreach .... as $appartment}
{$appartment->path}
...

它将打印:

Australia, Victoria, Melbourne, ...other children...

如何在 D2 中做同样的事情?以及如何在我的 symfony2 项目中包含学说扩展?

最佳答案

如果您想在 QueryBuilder 中使用它,您必须:

1) 添加DQL函数GroupConcat:GroupConcat

2 ) 注册 GroupConcat : DQL User Defined Functions

另一种选择是使用 NativeQuery :Native SQL

<小时/>

在 symfony2 中注册函数 DQL 非常简单,只需在 config.yml 中添加 GROUP_CONCAT 即可,如下所示:

    entity_managers:
default:
dql:
string_functions:
GROUP_CONCAT: YourBundle\Query\Mysql\GroupConcat

欲了解更多信息,请访问 Registering Custom DQL Functions

关于symfony2 : how to use group_concat in QueryBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10850345/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com