我将一个实体" 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);
}