Tôi đã tạo một thực thể A
với OneToMany
liên quan đến B
, có quan hệ OneToMany
đến C
.Bản sao sâu Thực thể Doctrine với các thực thể liên quan
Tôi phải sao chép thực thể A
này và đặt nó trong cơ sở dữ liệu với id mới. Ngoài ra tất cả các mối quan hệ sâu sắc nên được nhân bản với id mới quá.
có gì tôi đã cố gắng là để thiết lập A
id để null
:
$A = clone $A_original;
$A->setId(null);
$em->persist($A);
Nó tạo ra kỷ lục mới trong A
bảng, nhưng không ở B
và C
.
Tôi nên làm gì để tạo bản sao đầy đủ của thực thể A
?
Vấn đề duy nhất với điều này là, nó không có vẻ làm việc trên OneToMany, bất kỳ ý tưởng nào tại sao? – coder4show
@ coder4show đó là bởi vì bạn đang nhân bản các 'ArrayCollection' và không phải là các yếu tố trong đó. Tôi đã thêm một phương pháp nhân bản cho mối quan hệ OneToMany. – flec
Trong ví dụ này mối quan hệ OneToMany sẽ không được nhân bản một cách chính xác, vì các thực thể liên quan nhân bản vô tính vẫn tham chiếu đến thực thể cũ. Xem [câu trả lời này] (http://stackoverflow.com/a/28313673/3215645) để có ví dụ làm việc – Richard