Php 如何在extbase模型中重置具有1:1关系的属性
关于extbase中具有1:1关系的模型,我遇到了一个问题。 我的模型“Beast”链接到另一个模型“MissingBeast”,该模型通过1:1关系实现。我可以成功地将MissingBeast对象添加到Beast对象。但我不知道怎么重置它 以下代码显示模型Beast中的特性定义Php 如何在extbase模型中重置具有1:1关系的属性,php,typo3,extbase,Php,Typo3,Extbase,关于extbase中具有1:1关系的模型,我遇到了一个问题。 我的模型“Beast”链接到另一个模型“MissingBeast”,该模型通过1:1关系实现。我可以成功地将MissingBeast对象添加到Beast对象。但我不知道怎么重置它 以下代码显示模型Beast中的特性定义 /** * missingBeast * * @var Tx_Hobeast_Domain_Model_MissingBeast * @lazy */ protected $missingBeast;
/**
* 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;
}
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();
我使用的是打字版本4.7.8只需将其设置为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;
}
只需将其设置为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;
}