【问题标题】:How to reset a property with an 1:1 relation in an extbase model如何在 extbase 模型中重置具有 1:1 关系的属性
【发布时间】:2013-03-14 12:09:01
【问题描述】:

我遇到了关于 extbase 中具有 1:1 关系的模型的问题。 我的模型“Beast”有一个链接到另一个模型“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

【问题讨论】:

    标签: php typo3 extbase


    【解决方案1】:

    只需将其设置为 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      相关资源
      最近更新 更多