首页 > 解决方案 > Doctrine 找不到列(错误:[column] 未定义。)

问题描述

我确实有以下来源:

//$enity = 'Company:CompanyResourceModel';
public function getAll($entity, $filter = null){
    $qb = App::DB()->createQueryBuilder();
    $data = $qb ->select('r')
        ->from($entity, 'r')
        ->where($this->getExpression($qb, $qb->expr()->andX(), $filter))
        ->getQuery()
        ->getArrayResult();

    if ( is_array($data) && !empty($data) ) {
        return $data;
    }
    return [];
}

其中 App::DB() 包含我的 EntityManager 和 getExpression() 来自这里 https://github.com/tarlepp/symfony-flex-backend/blob/c979e816ed5c4d02de2e857885a4b47f7e42d71e/src/Rest/RepositoryHelper.php#L152-L232

但是,我不断收到以下错误

Type: Doctrine\ORM\Query\QueryException
Message: [Semantical Error] line 0, col 51 near 'week = ?1': Error: 'week' is not defined.

'week' 是我的表的现有列,在给定的实体中定义为

/**
 * @ORM\Column(type="integer")
 */
protected $week;

谁能告诉我哪里出错了,或者至少指出我正确的方向?提前致谢!

标签: phpdoctrine-ormdoctrine

解决方案


根据评论,

您需要使用实体别名来引用实体属性,r例如

->where('r.'.$this->getExpression($qb, $qb->expr()->andX(), $filter))

推荐阅读