Xin chào Tôi có vấn đề khi cố gắng để loại bỏ các thực thể loại bỏ trong quan hệ OneToMany. Sau một vài giờ gỡ lỗi, tôi đã cố gắng hạ cấp học thuyết từ phiên bản 2.1.2 xuống 2.0.2 mới nhất và nó đột nhiên bắt đầu hoạt động.Doctrine 2.0 vs 2.1 cascade loại bỏ OneToMany
Hãy tưởng tượng hai thực thể Công ty và Địa chỉ liên quan 1: N.
/**
* @Entity
*/
class Company extends Entity
{
/**
* @var integer
* @id @Column(type="integer")
* @generatedValue
*/
private $id;
/**
* @var Collection
* @OneToMany(targetEntity="Address",mappedBy="company", cascade={"persist","remove"})
*/
private $addresses;
}
/**
* @Entity
*/
class Address extends Entity
{
/**
* @var integer
* @id @Column(type="integer")
* @generatedValue
*/
private $id;
/**
* @var Company
* @ManyToOne(targetEntity="Company", inversedBy="addresses")
* @JoinColumn(name="company_id", referencedColumnName="id",nullable=false)
*/
private $company;
}
khi tôi cố gắng xóa đối tượng Công ty, tôi cũng muốn các địa chỉ được chỉ định cũng sẽ bị xóa.
$em->remove($company);
$em->flush();
Trong học thuyết 2.1.2 việc xóa địa chỉ không được thực hiện để ràng buộc toàn vẹn không thành công. Trong phiên bản 2.0.2, nó hoạt động hoàn hảo. Điều Wierd trên nó là, nếu tôi sử dụng phần mở rộng EntityAudit https://github.com/simplethings/EntityAudit LogRevisionListener là phiên bản sửa lỗi các thực thể địa chỉ (đặt chúng revtype = DEL) trong học thuyết 2.1.2 (tất nhiên trong 2.0.2) nhưng UnitOfWork không loại bỏ nó.
Có sự khác biệt nào về cách xử lý loại bỏ tầng trong 2.0.2 và trong 2.1.2 không?
Thank you very much
Tôi tình cờ gặp vấn đề này hôm nay, tôi đang sử dụng 2.1.6. :/ – mokagio
Vâng, tôi phải sửa bản thân mình, nó hoạt động cho tôi ngay bây giờ! Tôi đã sử dụng 'cascade = {" all "}' nhưng khi tôi thay đổi nó trong 'cascade = {" remove "}' mọi thứ bắt đầu hoạt động tốt. – mokagio
Mặc dù tôi phải nói rằng có lẽ vấn đề của tôi có thể không hoàn toàn do chú thích hoặc Doctrine, bởi vì tôi đang thực hiện thao tác chuyên sâu trên thực thể và sau khi kiểm tra kết hợp các tùy chọn xếp tầng, tôi phát hiện ra rằng '" hợp nhất "' tùy chọn là một trong những vấn đề. Hy vọng nó giúp anyway :) – mokagio