我在我的存储库类中有这个非常简单的方法,它将列表作为查询构建器对象获取:
public function fetchListAsQueryBuilder(User $user, $receiverType, $limit, $offset)
{
$queryBuilder = $this->getEntityManager()->createQueryBuilder();
$query = $queryBuilder
->select(['no'])
->from('SLCoreBundle:Notification', 'no')
->where('no.receiver = :user')
->andWhere('no.receiverType = :receiverType')
->orderBy('no.createdAt', 'DESC')
->setParameters([
'user' => $user,
'receiverType' => $receiverType,
])
->setMaxResults($limit)
->setFirstResult($offset)
;
return $query;
}
这个方法在我的prod服务器上工作得很好,但在我的本地机器上出错,php版本相同(5.5.9),这里有一个错误:
执行'SELECT DISTINCT id_6 FROM时发生异常 (SELECT s0_.receiver_type AS receiver_type_0,s0_.importance AS important_1,s0_.seen AS seen_2,s0_.deleted AS deleted_3, s0_.created_at AS created_at_4,s0_.updated_at AS updated_at_5,s0_.id AS id_6,s0_.reason AS reason_7 FROM sl_notification s0_ WHERE s0_.receiver_id =? AND s0_.receiver_type =?)dctrn_result ORDER BY s0_.created_at DESC LIMIT 25 OFFSET 0'with params [2,1]:
SQLSTATE [42S22]:找不到列:1054'order clause'中的未知列's0_.created_at'
我的实体配置如下:
映射的超类AbstractMessage:
abstract class AbstractMessage
{
use CreatedUpdatedAtTrait;
// here go properties, setters and getter
通知类:
class Notification extends AbstractMessage
{
// here go properties, setters and getters
和CreateUpdatedAtTrait:
trait CreatedUpdatedAtTrait
{
/**
* @var \DateTime
*/
private $createdAt;
/**
* @var \DateTime
*/
private $updatedAt;
// Here go setters and getters
}
架构(AbstractMessage):
<mapped-superclass name="SL\CoreBundle\Entity\AbstractMessage">
...
<field name="createdAt" column="created_at" type="datetime">
<gedmo:timestampable on="create" />
</field>
<field name="updatedAt" column="updated_at" type="datetime">
<gedmo:timestampable on="update" />
</field>
</mapped-superclass>
这是db表:
我不明白是什么导致了这个错误,我的其他实体在这个特性上工作得很好,而且我的其他查询orderBy
方法和mappedsuperclass类也没有任何错误。还有一个非常有趣的部分是,如果我删除orderBy
我的方法正在运行,并且我能够获得createdAt
值($object->getCreatedAt()
)。任何人都可以帮我解决这个问题吗?
编辑:我忘了提及,我最近将供应商更新到最新版本(sf-2.6.6,DoctrineORM-2.5.0)。
答案 0 :(得分:3)
我认为这是由学说2.5 +
引起的所以我又回到了2.4.7并重新开始工作了!
在我的composer.json
中"require": {
...
"doctrine/orm": "2.4.7",
...
}
并更新
php composer.phar update