我对extbase中的模型有1:1关系的问题。 我的模型“野兽”有一个链接到另一个模型“MissingBeast”,它通过1:1的关系实现。我可以成功添加将MissingBeast对象添加到Beast对象。但我不知道如何重置它。
以下代码显示了Model Beast中的属性定义
/**
* missingBeast
*
* @var Tx_Hobeast_Domain_Model_MissingBeast
* @lazy
*/
protected $missingBeast;
/**
* Returns the missingBeast
*
* @return Tx_Hobeast_Domain_Model_MissingBeast $missingBeast
*/
public function getMissingBeast() {
return $this->missingBeast;
}
/**
* Sets the missingBeast
*
* @param Tx_Hobeast_Domain_Model_MissingBeast $missingBeast
* @return void
*/
public function setMissingBeast(Tx_Hobeast_Domain_Model_MissingBeast $missingBeast) {
$this->missingBeast = $missingBeast;
}
Model Beast数据库表中missingBeast的值只是missingBeast的id。默认情况下为0。
我可以在设置MissingBeast后将此ID重置为0吗? 我试图像这样删除失踪的野兽:
$missingBeast = $this->service->missingBeastRepository->findByBeast($beast);
$this->service->missingBeastRepository->remove($missingBeast);
但是当我这样做时,以下查询会陷入无限循环。
$query = $this->createQuery();
return $query->matching($query->equals("uid", $beast->getMissingBeast()))->execute()->count();
我正在使用Typo版本4.7.8
答案 0 :(得分:4)
只需将其设置为NULL,这将删除关系,不要忘记更新存储库中的模型。
$beast = $this->beastRepository->findByUid(345)->setMissingBeast(NULL);
$this->beastRepository->update($beast);
为了能够将属性设置为NULL,您必须通过默认情况下将属性设置为NULL来调整模型,并删除setter中的类型提示:
/**
* missingBeast
*
* @var Tx_Hobeast_Domain_Model_MissingBeast
* @lazy
*/
protected $missingBeast = NULL;
/**
* Sets the missingBeast
*
* @param Tx_Hobeast_Domain_Model_MissingBeast $missingBeast
* @return void
*/
public function setMissingBeast($missingBeast) {
$this->missingBeast = $missingBeast;
}