簡體   English   中英

刪除與學說的關聯

[英]Removing associations with Doctrine

我正在使用Doctrine,有三個表。 artistscategoriesartist_category 我有一個導入腳本,該腳本從站點導入藝術家,類別和關聯並將其保存到數據庫中。 我遇到的問題是刪除關聯。 假設我有一位藝術家,並且該藝術家與三個類別相關聯。 現在,在下一個導入中,刪除了artist_category關聯。 我現在想做的是從關聯表中刪除不再相關的類別。

假設我的藝術家的ID為254,應該刪除的類別的ID為4。

我的數據庫表當前看起來像這樣

在此處輸入圖片說明

現在,我有了一個與藝術家應該關聯的所有類別的數組

array(1) {
  [0]=>
  string(1) "3"
}

這意味着,在下一步中,我必須刪除關聯artist_id(254)和artistcategory_id(4)。

我在做什么

foreach ($artist->getArtistCategories() as $artistCategory) {
    if (!in_array($artistCategory->getId(), $artistCategories)) {
        $artist->removeArtistCategories($artistCategory->getId());
    }
}

這正在工作。 在類別4的情況下,將調用removeArtistCategories方法。 但是,刪除無效。 這是我嘗試過的

$this->artistCategories->removeElement($artistCategory);

返回假

$this->artistCategories->remove($artistCategory);

返回null

$this->artistCategories->contains($artistCategory)

返回假

但是,當我var_dump($this->artistCategories)我得到了有關類別的很多信息。 但是,刪除不起作用。 我究竟做錯了什么?

原則適用於實體對象,而不適用於ID。 所以與其:

$artist->removeArtistCategory($artistCategory->getId());

嘗試

$artist->removeArtistCategory($artistCategory);

並按照“ Doctrine”文檔中的說明定義卸妝:

http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/working-with-associations.html#association-management-methods

public function removeArtistCategory(Category $category) {
    $this->artistCategories->removeElement($category);
}

請注意,由於您只刪除一個條目而不是多個類別,因此我將方法removeArtistCategories重命名為removeArtistCategory 這一點很重要,因為removers adders具有與getterssetters一樣的命名約定,並且如果您未正確定義方法,則在使用某些組件進行學說時會遇到問題。

我只是假設您在ArtistCategory之間存在toMany關系,因為我不知道您的實體定義,我需要更多信息才能為您提供適當的解決方案。 因此,此代碼未經測試,可能無法正常工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM