首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决这个问题:“created_at”列与映射程序中的另一列发生冲突

如何解决这个问题:“created_at”列与映射程序中的另一列发生冲突
EN

Stack Overflow用户
提问于 2013-10-21 07:26:16
回答 2查看 2.9K关注 0票数 5

我目前正在用Symfony2做一个小项目。

我正在尝试从一天(默认情况下)从一个表中获取所有条目。

我第一次尝试在我的理论查询生成器中使用DAY(),但这不起作用,所以现在我在实体存储库中使用了一个原生sql查询:

代码语言:javascript
复制
$em = $this->getEntityManager();

$rsm = new ResultSetMappingBuilder($em);
$rsm->addRootEntityFromClassMetadata('Teacup\CompareBundle\Entity\Log', 'l');
$rsm->addJoinedEntityFromClassMetadata('Teacup\CompareBundle\Entity\Frame', 
                                       'f', 
                                       'l', 
                                       'frame', 
                                       array('id' => 'frame_id'));

$query = $em->createNativeQuery('SELECT l.id, l.severity, 
                                        l.details, l.created_at, f.url 
                                 FROM log l 
                                 INNER JOIN frame f ON l.frame_id = f.id 
                                 WHERE DAY(l.created_at) = :day', $rsm);

但我知道这个错误:

代码语言:javascript
复制
The column 'created_at' conflicts with another column in the mapper. 

我找不到解决这个问题的方法。我很肯定这没什么,只是,我一直在努力,但没有成功。有人能帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-30 12:06:09

为什么不使用DBAL层呢?

代码语言:javascript
复制
$day = date('d');

$dbal = $this->getDoctrine()->getConnection('default');
$stmt = 'SELECT l.id, l.severity, l.details, l.created_at, f.url FROM log l 
         INNER JOIN frame f ON l.frame_id = f.id 
         WHERE DAY(l.created_at) = :day';

$data = $dbal->fetchAssoc( $stmt , array( 'day' => $day ) );
票数 1
EN

Stack Overflow用户

发布于 2016-07-26 23:51:19

为Doctrine指定重命名模式以自动解决冲突:

代码语言:javascript
复制
$rsm = new ResultSetMappingBuilder($em, ResultSetMappingBuilder::COLUMN_RENAMING_INCREMENT);

接下来,像往常一样配置RSM,然后为查询生成一个select子句:

代码语言:javascript
复制
$selectClause = $rsm->generateSelectClause()

$query = $em->createNativeQuery('SELECT ' . $selectClause. '
                             FROM log l 
                             INNER JOIN frame f ON l.frame_id = f.id 
                             WHERE DAY(l.created_at) = :day', $rsm);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19488458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档