我目前正在用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. 我找不到解决这个问题的方法。我很肯定这没什么,只是,我一直在努力,但没有成功。有人能帮我吗?
发布于 2014-05-30 12:06:09
为什么不使用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 ) );发布于 2016-07-26 23:51:19
为Doctrine指定重命名模式以自动解决冲突:
$rsm = new ResultSetMappingBuilder($em, ResultSetMappingBuilder::COLUMN_RENAMING_INCREMENT);接下来,像往常一样配置RSM,然后为查询生成一个select子句:
$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);https://stackoverflow.com/questions/19488458
复制相似问题