如何从 Doctrine sql 查询中映射列名?
Posted
技术标签:
【中文标题】如何从 Doctrine sql 查询中映射列名?【英文标题】:How is it possible to map column names from a Doctrine sql query? 【发布时间】:2021-08-11 07:22:36 【问题描述】:我用这样的查询生成器创建了一个查询:
$qb = $em->createQueryBuilder();
$qb->select(['u.id', 'u.name'])
->from(User::class, 'u')
->where('u.active = 1')
;
$sql = $qb->getQuery()->getSql();
结果如下:
SELECT u1_.user_id as s1, u1_.full_name as s2 FROM users u1_ WHERE u1_.is_active = 1
我想将其作为本机查询执行,但我必须找出如何将 s1, s2
映射到 id, name
。
【问题讨论】:
【参考方案1】:你必须在你的选择中使用as
使用您的示例 =>
$qb = $em->createQueryBuilder();
$qb->select(['u.id as s1', 'u.name as s2'])
->from(User::class, 'u')
->where('u.active = 1');
$sql = $qb->getQuery()->getSql();
这会将 id 映射到 s1
并命名为 s2
【讨论】:
【参考方案2】:不确定我是否理解您的问题,但如果您想在结果中使用列 id
和 name
运行本机查询,您可以在查询中替换它们,它们是别名,因此它们可以是任何你想要的:
SELECT u.user_id as id, u.full_name as name FROM users u WHERE u.is_active = 1
【讨论】:
以上是关于如何从 Doctrine sql 查询中映射列名?的主要内容,如果未能解决你的问题,请参考以下文章