Giả sử tôi có một ứng dụng blog.
Tác giả có thể thêm nhiều hình ảnh vào bài đăng bằng cách cung cấp liên kết tới url của hình ảnh hiện có trên web hoặc tải lên hình ảnh mới.Tôi làm cách nào để thực hiện các truy vấn liên kết đối tượng phức tạp trong học thuyết 2? (thực thể ảo)
Tôi muốn có thể quay lại từ hình ảnh (tải lên hoặc url) cho tất cả các bài đăng sử dụng hình ảnh đó và từ bài đăng cụ thể cho tất cả hình ảnh trong bài đăng đó (ví dụ - vì vậy tôi có thể xóa hình ảnh bất hợp pháp và/hoặc tạm ngưng bài đăng sử dụng chúng cho đến khi tác giả sửa bài đăng).
Tuy nhiên, tôi sử dụng các thực thể khác nhau cho hình ảnh đã tải lên so với hình ảnh url - hình ảnh được tải lên có nhiều dữ liệu liên quan đến hình ảnh hơn hình ảnh url.
Điều này dẫn đến mã phức tạp hơn, như trong mỗi lần lưu một bài đăng đã chỉnh sửa, tôi cần kiểm tra loại nào là hình ảnh cụ thể (trong tất cả các hình ảnh trong bài đăng mà tôi cần chạy) và hơn là tạo hoặc cập nhật bản ghi của nó và gán cho trường quan hệ trong thực thể bài đăng.
... Vì vậy, giả sử tôi có một UploadedImage
và UrlImage
đơn vị, tôi nghĩ về việc có một phương pháp setImages
trong thực thể post
, mà kiểm tra cho mỗi hình ảnh nó được, nếu nó được tải lên hoặc url, và sau đó gọi một trong hai setUploadedImages
hoặc setUrlImages
.
Tuy nhiên, tôi sẽ cần một loại kho ảo images
ảo để tải hình ảnh theo cùng một cách.
Nghe có vẻ phức tạp chút, và tôi tự hỏi:
- Làm thế nào tôi có thể có một thực thể thuyết ảo (với kho lưu trữ và tất cả của nó)?
- Có thiết kế nào tốt hơn không?
Bạn đã cân nhắc sử dụng [Ánh xạ thừa kế] (http://www.doctrine-project.org/docs/orm/2.1/en/reference/inheritance-mapping.html) chưa? – Orbling
@Orbling theo cách nào? Và làm thế nào nó sẽ giải quyết được "vấn đề" của việc quyết định phải làm gì với từng loại? – Doron
Vâng, bằng cách sử dụng Bản đồ thừa kế, bạn có thể có một lớp cha đại diện cho cả hai loại, và sau đó chúng có thể được xử lý cùng nhau. Họ có thể có cùng phương pháp và làm những việc khác nhau tùy thuộc vào loại phụ. – Orbling