提问者:小点点

将DoctrineSQL查询生成器(DBAL)映射到类型的惯用方法是什么?


我正面临着一个挑战,而工作类型映射的查询构建通过DoctrineSQL查询生成器(从DBAL,而不是ORM)使用MySQL 8。

执行的查询从数据库返回以下三列:

  • 用户id(表中的bigint列)
  • 起始时间(表中的日期时间列)
  • 结束时间(表中的datetime列)

但是,通过我当前的实现(例如简化),没有值映射到它们的PHP对应项。

        $queryBuilder = $this->entityManager->getConnection()->createQueryBuilder();

        $result = $queryBuilder
            ->select([
                'st.user_id',
                'st.starts_at',
                'st.ends_at',
            ])
            ->from('some_table', 'st')
            ->execute()
            ->fetchAll();

fetchAll()方法返回的结果返回一个数组

当然,我可以通过迭代/映射从数据库中获取的结果来进行类型映射/强制转换,但我想知道在原则中是否有其他方法来实现这一点(可能通过为SQL查询生成器注册som类型的ResultsMapping或类似的方法)。如果这确实是可能的,那么惯用的方法是什么?

谢谢。


共1个答案

匿名用户

您是否映射了要获取的对象的数据/列?在symfony项目中使用原则时(我猜纯PHP项目也是如此,这里对此进行了解释),您指的是from()方法中的实体类,因此,例如,如果映射对象是Acme\Model\SomeObject,则需要将对象名称空间和名称传递给from()方法-