我只想获取活动指标为真的记录:
class Question {
/**
* One Question has one Figure
* @ORMOneToOne(targetEntity="QuestionFigure", mappedBy="question")
*/
private $figure;
public function getFigure()
{
$criteria = Criteria::create()->where(Criteria::expr()->eq("active", true));
return $this->figure->matching($criteria);
}
当我这样做时,我收到错误:
Attempted to call an undefined method named "matching" of class
我相信这是因为匹配方法只能应用于 ArrayCollection,而 $this-> 不是。实现相同结果的类似方法是什么?
根据Ihor Kostrov提供的答案进行编辑:
getActive(( 不返回任何内容。测试一下,这有效:
public function getFigure()
{
if (!empty($this->figure) && $this->figure->getId() === 1) {
return $this->figure;
}
return null;
}
但是将 id 更改为 2 不起作用($this->figure->getId(( === 2(。我认为这是因为一对一关系学说只取一行?
是的,你有一对一的,所以你猫试试这个
public function getFigure(): ?QuestionFigure
{
if (!empty($this->figure) && $this->figure->getActive()) {
return $this->figure;
}
return null;
}
不!你的实体中一定没有逻辑!
要激活所有问题并激活 QuestionFigure,您必须配置存储库并实现一种方法。