gpt4 book ai didi

php - Doctrine,@oneToMany,但只有激活字段

转载 作者:行者123 更新时间:2023-12-03 23:06:14 25 4
gpt4 key购买 nike

我有一个公司实体和一个审查实体。公司有多个评论。

当我调用 company->getReviews() 时,我希望它只返回 isValidated 字段为 TRUE 的评论。

我该怎么办?哪种方式更好?

/**
* @ORM\Table(name="Company")
*/
class Company
{

/**
* @ORM\OneToMany(targetEntity="MyAppBundle\Entity\Review", mappedBy="company")
*/
protected $reviews;


/**
* Add reviews
*
* @param \ProSearch\ReviewBundle\Entity\Review $reviews
* @return Company
*/
public function addReview(\ProSearch\ReviewBundle\Entity\Review $reviews)
{
$this->reviews[] = $reviews;

return $this;
}

/**
* Remove reviews
*
* @param \ProSearch\ReviewBundle\Entity\Review $reviews
*/
public function removeReview(\ProSearch\ReviewBundle\Entity\Review $reviews)
{
$this->reviews->removeElement($reviews);
}

/**
* Get reviews
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getReviews()
{
return $this->reviews;
}

}

And the review entity :

/**
* @ORM\Table()
* @ORM\Entity()
*/
class Review
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
protected $title;

/**
* @var string
*
* @ORM\Column(name="description", type="text")
*/
protected $description;


/**
* @ORM\ManyToOne(targetEntity="MyAppBundle\Entity\Company")
*/
protected $company;



/**
* @var boolean
*
* @ORM\Column(name="isValidated", type="boolean")
*/
protected $isValidated;

}

最佳答案

假设 Company::$reviews 是一个 Doctrine Collection

您可以对集合使用过滤方法。这会产生一个新的集合,其中只有经过验证的评论。

$companyObj->getReviews()->filter(function($review) { 
return $review->isValidated();
});

看到你也用 Symfony 标记了它。我建议不要修改 Company::getReviews(),因为它在使用集合时用在表单中。当其他开发人员想要一家公司的所有评论时,这也可能会非常困惑。调用 getReviews() 不会返回开发人员期望的结果。

关于php - Doctrine,@oneToMany,但只有激活字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com