Tôi đang cố gắng để có một đặc điểm Fileable sẽ cung cấp cho Entity các phương thức để CRUD Files dựa trên File Entity được đề cập dưới đây.Sử dụng Doctrine và Symfony để tạo Polymorphic như các hiệp hội
Sau khi đọc tài liệu trên Doctrine và tìm kiếm trên internet, tốt nhất tôi có thể tìm là Inheritance Mapping nhưng tất cả đều yêu cầu phân lớp mở rộng siêu lớp không lý tưởng vì thực thể đã mở rộng các lớp khác. Tôi có thể có một thực thể FileFoo
và một thực thể FileBar
nhưng điều này trở nên quá lộn xộn và yêu cầu phải tham gia thêm (super
->sub
->entity
).
Ngoài ra, tôi có thể có một Entity tập tin trong đó có nhiều cột cho thực thể (vì vậy foo_id
cho đối tượng Foo
, bar_id
cho đối tượng bar
và vân vân) nhưng điều này trở nên lộn xộn và sẽ đòi hỏi một cột mới cho mỗi thực thể mà tôi 'd muốn thêm đặc điểm Fileable quá.
Vì vậy, đối với các câu hỏi: Tôi có đang suy nghĩ về cách tôi muốn giữ dữ liệu không chính xác không? Có một số tính năng/chức năng trong Doctrine/Symfony mà tôi đã bỏ lỡ không? Bạn có nghĩ rằng tôi có tính năng như thế này sẽ được thêm vào nếu tôi đến ngã ba Doctrine để thêm tính năng này, tôi cũng nên tìm ở đâu?
<?php
/**
* File
*
* @ORM\Table()
* @ORM\Entity()
* @ORM\HasLifecycleCallbacks()
*/
class File
{
/**
* @var integer
*
* @ORM\Column(type="integer")
* @ORM\Id()
* @ORM\GeneratedValue()
*/
protected $id;
/**
* @var string
*
* @ORM\Column(type="string")
*/
protected $entityName;
/**
* @var string
*
* @ORM\Column(type="string")
*/
protected $entityId;
...
Bạn có thực sự cần mặt trái của thực thể -> Mối quan hệ tệp không? Bởi vì tôi có trên một trong các dự án của tôi một giao diện 'FileableInterface', và vì tôi không phải truy cập' Entity' từ 'File', nên tôi tránh bất kỳ cấu hình phức tạp nào của Doctrine. Vì vậy, tất cả phụ thuộc vào những gì bạn cần, nhưng nếu bạn không cần sử dụng '$ file-> getEntity()', chỉ xác định bên sở hữu của mối quan hệ có thể là đủ. – Terenoth