0
リンクテーブルを使用して2つのエンティティ間に多対多の関係があります。私の問題は、削除時に、削除すべきではない他のエンティティが、リンクテーブルの行ではなく、削除しようとしているように見えることです。Doctrine - ManyToMany関係が正しく削除されない
私は、次の表があります、私もhotel_property_amenityを削除する必要がありますプロパティを削除しようとしているが、私のログが表示されているので、
CREATE TABLE `hotel_property_amenity` (
`property_id` int(11) NOT NULL,
`amenity_id` int(11) NOT NULL,
PRIMARY KEY (`property_id`,`amenity_id`),
KEY `IDX_197E8A3E549213EC` (`property_id`),
KEY `IDX_197E8A3E9F9F1305` (`amenity_id`),
CONSTRAINT `FK_197E8A3E9F9F1305` FOREIGN KEY (`amenity_id`) REFERENCES `hotel_amenity` (`id`),
CONSTRAINT `FK_197E8A3E549213EC` FOREIGN KEY (`property_id`) REFERENCES `hotel_property` (`id`)
)
:
CREATE TABLE `hotel_property` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`location_id` int(11) DEFAULT NULL,
`tier_id` int(11) DEFAULT NULL,
`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`description` longtext COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`)
)
CREATE TABLE `hotel_amenity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value_str` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`is_active` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
)
とリンクテーブルをhotel_amenityが削除されています(または試行していますが、明らかに制約違反をスローします)
ログ:
500 An exception occurred while executing 'DELETE FROM hotel_amenity WHERE id = ?' with params [67]
。 。
Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`test`.`hotel_property_amenity`, CONSTRAINT `FK_197E8A3E9F9F1305` FOREIGN KEY (`amenity_id`) REFERENCES `hotel_amenity` (`id`))
教義プロパティエンティティ(私は私が間違っているかもしれないと思う場合):
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(
* targetEntity="Test\Hotel\Entity\Amenity",
* indexBy="type",
* orphanRemoval=true,
* fetch="EXTRA_LAZY",
* cascade={"persist", "refresh", "remove"})
* @ORM\JoinTable(name="hotel_property_amenity",
* joinColumns={@ORM\JoinColumn(name="property_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="amenity_id", referencedColumnName="id")})
*
* @ORM\OrderBy({"featured" = "DESC", "sortPosition" = "ASC"})
*/
protected $amenities;
誰も私が間違って行ってきた任意のアイデアを持っていますか?