Doctrine DQL - Select 列别名添加为新记录

Doctrine DQL - Select column alias added as new record

我有一个链接到用户配置文件实体的用户实体。

我需要能够连接用户的名字和姓氏以进行过滤。

我的查询大概是这样的:

$qb = $this->createQueryBuilder('users');
$qb
    ->addSelect('users')
    ->innerJoin('users.profile', 'profile')
    ->addSelect('profile')
    ->addSelect('CONCAT(profile.firstName, \' \', profile.lastName) AS fullName')
;

我希望全名被视为用户 属性 或个人资料,但我在结果中将全名作为一个全新的记录来处理:

[0] => Array (
    [id] => 5
    [username] => admin
    [profile] => Array (
        [firstName] => John
        [lastName] => Doe
    )
), 
[fullName] => John Doe

我尝试将列别名为 "users.fullName",但这给了我一个错误。

[语法错误] 第 0 行,第 87 列:错误:应为 Doctrine\ORM\Query\Lexer::T_FROM,得到 '.'

执行此操作的正确方法是什么?

谢谢

为什么不在 select 方法中提供所需列的完整列表:

    ->select('user.id, user.username, CONCAT(profile.firstName, \' \', profile.lastName) AS fullName')

您应该会收到正确的关联数组。

记得添加合适的where子句:

    ->where("CONCAT(profile.firstName, ' ', profile.lastName) LIKE :name")
    ->setParameter('name', '%' . $name . '%')