Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何解决这个问题:列';创建于';与映射器中的另一列冲突_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php 如何解决这个问题:列';创建于';与映射器中的另一列冲突

Php 如何解决这个问题:列';创建于';与映射器中的另一列冲突,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我目前正在和Symfony2一起做一个小项目 我试图从一个表中获取一天(默认为今天)的所有条目 我第一次尝试在我的条令查询生成器中使用DAY(),但不起作用,因此我现在在实体存储库中使用本机sql查询: $em = $this->getEntityManager(); $rsm = new ResultSetMappingBuilder($em); $rsm->addRootEntityFromClassMetadata('Teacup\CompareBundle\Entity\L

我目前正在和Symfony2一起做一个小项目

我试图从一个表中获取一天(默认为今天)的所有条目

我第一次尝试在我的条令查询生成器中使用
DAY()
,但不起作用,因此我现在在实体存储库中使用本机sql查询:

$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);
但我得到了这个错误:

The column 'created_at' conflicts with another column in the mapper. 

我不知道怎么解决它。我很确定这没什么,但是,我只是不断尝试,没有任何成功。有人能帮我吗?

为什么不使用DBAL层

$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 ) );

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

$rsm = new ResultSetMappingBuilder($em, ResultSetMappingBuilder::COLUMN_RENAMING_INCREMENT);
按常规配置RSM,然后为您的查询生成select cluse:

$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);

实体的属性为$createdAt和$created_?实体的属性为$created_,我更改了下面的代码,但得到了相同的错误。您使用的是什么数据库-MySQL?你能发布你的实体吗?如果只查询日志表,而不尝试使用与框架表的联接,查询是否有效?