2013-04-05 29 views

Trả lời

15

$em->merge() được sử dụng để lấy Thực thể đã được đưa ra khỏi ngữ cảnh của người quản lý đối tượng và 'gắn lại nó'.

  • Nếu Pháp nhân chưa bao giờ được quản lý, hợp nhất tương đương với duy trì.
  • Nếu thực thể được tách ra hoặc được tuần tự hóa (đặt vào bộ nhớ cache) thì hợp nhất nhiều hơn hoặc ít hơn tra cứu id của thực thể trong kho dữ liệu và sau đó bắt đầu theo dõi bất kỳ thay đổi nào đối với thực thể từ thời điểm đó.

Việc hợp nhất hành vi này mở rộng hành vi này với các thực thể được kết hợp của đối tượng bạn đang hợp nhất. Điều này có nghĩa là các thay đổi được xếp chồng lên các liên kết chứ không phải chỉ thực thể được hợp nhất.

+0

Cảm ơn bạn rất nhiều vì điều này! Tôi cũng có một vấn đề tương tự, sau khi người quản lý thực thể đã đóng cửa và tôi phải thiết lập lại người quản lý. Điều gì đã xảy ra là các thực thể cần được cập nhật, nhận được câu lệnh chèn và ofcourse lỗi ràng buộc khoá ngoại xuất hiện. Sử dụng $ em-> merge() đã giải quyết nó cho tôi, bởi vì nó đánh dấu thực thể như được quản lý một lần nữa. – tomazahlin

+0

Tôi biết câu trả lời này là cũ, nhưng chỉ để tham khảo, hợp nhất() sẽ bị xóa trong Doctrine3 https://github.com/doctrine/doctrine2/blob/master/UPGRADE.md – Patito

Các vấn đề liên quan