1

1:1の関係にあるextbaseのモデルに関して問題があります。私のモデル「Beast」には、1:1の関係で実現される別のモデル「MissingBeast」へのリンクがあります。MissingBeastオブジェクトをBeastオブジェクトに正常に追加できます。しかし、どうやってリセットするのかわかりません。

次のコードは、ModelBeastのプロパティ定義を示しています。

/**
 * 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;
}

モデルビーストのデータベーステーブルの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を使用しています

4

1 に答える 1

4

NULLに設定するだけで、リレーションが削除され、リポジトリ内のモデルを更新することを忘れないでください。

$beast = $this->beastRepository->findByUid(345)->setMissingBeast(NULL);
$this->beastRepository->update($beast);

プロパティをNULLに設定できるようにするには、デフォルトでプロパティをNULLに設定してモデルを調整し、セッターのタイプヒントを削除する必要があります。

/**
 * 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;
}
于 2013-03-14T18:08:10.840 に答える