我正在設計一個Symfony2應用程序,其中一個計算機實體與幾個硬件組件,即主板,CPU,磁盤,MemoryModule等等相關聯。他們都是在學說中由實體代表的。Symfony2/Doctrine:如何在同一個集合中添加更多相同的實體?
如果在硬件配置中有多個相同的磁盤,我需要做的是將多個磁盤關聯到同一臺計算機。我想,以避免像磁盤1,磁盤2等多個領域,所以我設置了兩個實體之間的多對多關係:
實體計算機:
//...
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Components\Disk", inversedBy="computers")
* @ORM\JoinTable(name="computers_disks")
*/
protected $disks;
實體磁盤:
//...
enter code here
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Computers\Computer", mappedBy="disks")
*/
protected $computers;
例如,我在我的燈具中運行此代碼:
$testComputer = new Computer();
$cpu = $this->getReference('CPU-i3-1150');
$disk = $this->getReference('Disk-wd500blue');
//...
$testComputer->setCpu($cpu); // OK
$testComputer->addDisk($disk); // OK
$testComputer->addDisk($disk); // ERROR
我得到的錯誤是,符合市場預期,完整性約束違規:
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-14'
for key 'PRIMARY'
如何克服呢?我想我應該在連接表上添加一個索引,但我不知道這是否可能。
編輯:我也試過 - 只是爲了 - 與單向關係,相同的錯誤。
非常感謝卡洛斯的位置,其實我在另一個問題上聽說過一個「喬伊班」。這非常有幫助。 我也想管理它在一個奏鳴曲管理形式,即有一個「添加磁盤」按鈕,但我想這不是微不足道的。 如果我爲此打開另一個問題,可能會更好嗎?你有什麼經驗嗎? – godzillante
首先嚐試實現它,如果你沒有得到它的工作,打開一個不同的問題 –