Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在extbase模型中重置具有1:1关系的属性_Php_Typo3_Extbase - Fatal编程技术网

Php 如何在extbase模型中重置具有1:1关系的属性

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;

关于extbase中具有1:1关系的模型,我遇到了一个问题。 我的模型“Beast”链接到另一个模型“MissingBeast”,该模型通过1:1关系实现。我可以成功地将MissingBeast对象添加到Beast对象。但我不知道怎么重置它

以下代码显示模型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;
}
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;
}