找不到'orderby'列时出错

时间:2015-04-18 08:57:47

标签: symfony doctrine-orm

我在我的存储库类中有这个非常简单的方法,它将列表作为查询构建器对象获取:

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表: enter image description here

我不明白是什么导致了这个错误,我的其他实体在这个特性上工作得很好,而且我的其他查询orderBy方法和mappedsuperclass类也没有任何错误。还有一个非常有趣的部分是,如果我删除orderBy我的方法正在运行,并且我能够获得createdAt值($object->getCreatedAt())。任何人都可以帮我解决这个问题吗?

编辑:我忘了提及,我最近将供应商更新到最新版本(sf-2.6.6,DoctrineORM-2.5.0)。

1 个答案:

答案 0 :(得分:3)

我认为这是由学说2.5 +

引起的

所以我又回到了2.4.7并重新开始工作了!

在我的composer.json

"require": {
    ...
    "doctrine/orm": "2.4.7",
    ...
}

并更新

php composer.phar update