我使用Sytrfony的Doctrine,我有以下简单的实体:
/**
* @ORM\Table()
*/
class Ads{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var Photo
*
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Photo", mappedBy="advertisement", cascade={"persist", "remove"})
*
*/
private $photos;
/**
* @var string
*/
private $defaultPhoto = null;
public function __construct()
{
$this->photos = new ArrayCollection();
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @return ArrayCollection
*/
public function getPhotos()
{
return $this->photos;
}
/**
* @param ArrayCollection $photos
* @return $this
*/
public function setPhotos($photos)
{
$this->photos = $photos;
return $this;
}
public function getDefaultPhoto()
{
if(count($this->getPhotos()) > 0){
return $this->getPhotos()[0];
}
return null;
}
}
因此,实体是一个简单的实体,并且还具有非持久性字段$defaultPhotos
。
我的问题是,当我在Symfony中使用doctrine查询find
或findAll
时,如何自动触发getDefaultPhoto
方法并填充$defaultPhoto
属性?现在,当我在整个集合中查询defaultPhoto
或null
时,每次find
为findAll
。
是否有事件可以执行此操作或任何其他解决方案?
答案 0 :(得分:0)
首先,您不会使用getter($defaultPhoto
)填充任何内容(getDefaultPhoto
)。
您可以在类的构造函数上填充defaultPhoto
属性,然后在$this->defaultPhoto
方法上返回null
而不是getDefaultPhoto()
。