php - Doctrine DQL - 选择添加为新记录的列别名

标签 php symfony doctrine dql

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

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

这大致就是我的查询的样子:

$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 . '%')

关于php - Doctrine DQL - 选择添加为新记录的列别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51782107/

相关文章:

php - 拉维尔 8 : Class 'Database\Seeders\DB' not found

php - Symfony 的文档暗示多重类型提示是可能的。为什么?

php - 命令行 Doctrine ORM with Silex : You are missing a "cli-config.php" or "config/cli-config.php" file in your project

php - 使用自定义 Doctrine 2 hydrator 进行依赖注入(inject)

mysql - Doctrine 和 symfony2 中的多个更新查询

php - CSS Sprites - 如何隐藏图像的平衡部分

php - 无法使用 php 的 PDO 将数据插入数据库

php - jQuery 在发布后重置表单?

php - 使用 Symfony2 和 Twig 时出现警告 "Cannot reinitialise DataTable"

php - 在扩展另一个实体的实体中使用鉴别器