我将实体“TrainingProgressEntry”定义为@ORM\Entity 和“培训”属性,如下所示:
/**
* @ORM\ManyToOne(targetEntity="Training", inversedBy="training_progress")
* @ORM\JoinColumn(name="training_id", referencedColumnName="id")
*/
protected $training;
匹配的@ORM\Entity“Training”定义了一个属性“training_progress”,例如
/**
* @ORM\OneToMany(targetEntity="TrainingProgressEntry", mappedBy="training", cascade={"remove"})
* @ORM\OrderBy({"entry_date" = "ASC"})
*/
protected $training_progress;
和一个像这样的getter方法
/**
* Get trainingProgress
*
* @return \Doctrine\Common\Collections\ArrayCollection
*/
public function getTrainingProgress()
{
return $this->training_progress;
}
最后,我定义了一个 getter 方法,旨在仅返回日期比某个参考日期更新的条目:
/**
* @return \Doctrine\Common\Collections\ArrayCollection
*/
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: AppBundle\Entity\TrainingProgressEntry::$1
来自(哪里
vendor\doctrine\collections\lib\Doctrine\Common\Collections\Expr\ClosureExpressionVisitor.php
当试图“返回 $object->$field”时。
跟踪显示它是由上述行中的函数“getTrainingProgressSinceStart()”引起的
return $this->getTrainingProgress()->matching($criteria);
由于某种原因,似乎无法识别匹配功能或某些东西......我现在真的不知道要寻找什么。任何提示都非常受欢迎。