2011-10-10 29 views
7

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 UploadedImageUrlImage đơ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:

  1. 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ó)?
  2. Có thiết kế nào tốt hơn không?
+3

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

+0

@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

+0

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

Trả lời

2

Đây là tài liệu hướng dẫn cho những gì bạn đang cố gắng làm:
http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html

Nó mô tả thừa kế bảng duy nhất vs bảng lớp kế thừa. Trường hợp của bạn phù hợp cho trường hợp thứ hai, nhưng hãy cân nhắc việc di chuyển sang kế thừa bảng đơn.

Nếu người dùng (mã) của những hình ảnh này đối xử với họ giống nhau bất kể nguồn gốc của họ, độ phức tạp của truy vấn được thêm vào và việc sử dụng cơ sở dữ liệu sẽ không đáng để chuẩn hóa.

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