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 . '%')
我有一个链接到用户配置文件实体的用户实体。
我需要能够连接用户的名字和姓氏以进行过滤。
我的查询大概是这样的:
$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 . '%')