学说数组匹配标准函数导致未定义的属性:myentity :: $ 1(Symfony 3.4)



我将一个实体" trienderprogressentry"定义为@orm entity和类似的"培训"属性:

/**
 * @ORMManyToOne(targetEntity="Training", inversedBy="training_progress")
 * @ORMJoinColumn(name="training_id", referencedColumnName="id")
 */
protected $training;

匹配的@orm entity"训练"定义属性" triending_progress"

/**
 * @ORMOneToMany(targetEntity="TrainingProgressEntry", mappedBy="training", cascade={"remove"})
 * @ORMOrderBy({"entry_date" = "ASC"})
 */
protected $training_progress;

和一种像这样的getter方法

/**
 * Get trainingProgress
 *
 * @return DoctrineCommonCollectionsArrayCollection
 */
public function getTrainingProgress()
{
    return $this->training_progress;
}

finaly我定义了一种getter方法,旨在返回只有一个比参考日期更新日期的条目:

/**
 * @return DoctrineCommonCollectionsArrayCollection
 */
public function getTrainingProgressSinceStart()
{
    $startTime = $this->getUser()->getStart();
    $criteria = Criteria::create()
        ->andWhere(Criteria::expr()->gt('entry_date', $startTime))
        ->orderBy(['entry_date', 'ASC']);
    return $this->getTrainingProgress()->matching($criteria);
}

使用此最后一个功能时,我将获得以下" contexterRorexception":

Notice: Undefined property: AppBundleEntityTrainingProgressEntry::$1

来自

vendordoctrinecollectionslibDoctrineCommonCollectionsExprClosureExpressionVisitor.php

尝试"返回$ object-> $ field"。

该跟踪表明它是由上述函数" getTrainingProgressSincestart()"

引起的。
return $this->getTrainingProgress()->matching($criteria);

由于某种原因,匹配函数似乎并未被识别出来...我真的不知道现在要寻找什么。任何提示都非常欢迎。

您可能已经解决了这个问题,但是我会回答其他任何人的参考。

方法:标准的顺序接受键的数组,是字段,排序顺序为值,因此您的位置:

/**
 * @return DoctrineCommonCollectionsArrayCollection
 */
public function getTrainingProgressSinceStart()
{
    $startTime = $this->getUser()->getStart();
    $criteria = Criteria::create()
        ->andWhere(Criteria::expr()->gt('entry_date', $startTime))
        ->orderBy(['entry_date', 'ASC']);
    return $this->getTrainingProgress()->matching($criteria);
}

它应该是['entry_date'=>'asc']:

/**
 * @return DoctrineCommonCollectionsArrayCollection
 */
public function getTrainingProgressSinceStart()
{
    $startTime = $this->getUser()->getStart();
    $criteria = Criteria::create()
        ->andWhere(Criteria::expr()->gt('entry_date', $startTime))
        ->orderBy(['entry_date' => 'ASC']);
    return $this->getTrainingProgress()->matching($criteria);
}

相关内容

  • 没有找到相关文章

最新更新