1

我使用查询生成器创建了一个查询,如下所示:

$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, s2id, name.

4

2 回答 2

0

不确定我是否理解您的问题,但如果您想在结果中使用列id和运行本机查询name,您可以在查询中替换它们,它们是别名,因此它们可以是您想要的任何东西:

SELECT u.user_id as id, u.full_name as name FROM users u WHERE u.is_active = 1
于 2021-09-14T13:33:11.607 回答
0

你必须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

于 2021-09-14T07:23:01.107 回答