symfony easyadmin как создать поле автозаполнения с отношением «многие ко многим» с дополнительными полями - PullRequest
0 голосов
/ 26 апреля 2020
class ImageGallery
{
    ...

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\MediaObject", inversedBy="imageGalleries")
     * @ORM\JoinColumn(nullable=false)
     */
    private $image;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Gallery", inversedBy="imageGalleries")
     * @ORM\JoinColumn(nullable=false)
     */
    private $gallery;

    /**
     * @Gedmo\SortablePosition
     * @ORM\Column(type="integer")
     */
    private $position;

...


class Gallery
{


...

    /**
     * @ Gedmo\SortableGroup
     * @ORM\OneToMany(targetEntity="App\Entity\ImageGallery", mappedBy="gallery", fetch="EXTRA_LAZY")
     */
    private $imageGalleries;

...


class MediaObject
{

...

   /**
     * @var string
     *
     * @ORM\Column(type="string", length=255, nullable=true)
     * @Groups("media")
     */
    private $filename;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\ImageGallery", mappedBy="image")
     */
    private $imageGalleries;
...

easy_admin_config :
    App\Entity\Gallery
            form:
                fields:
                    -  property: 'imageGalleries'
                       type: 'easyadmin_autocomplete'

Так что, конечно, не автозаполнение, потому что таблица "ImageGallery" пуста, как извлечь записи из MediaObject?

У меня есть решение, но я не думаю, что это лучше всего, я думаю, чтобы добавить отношения многие ко многим непосредственно на изображении

class Gallery
{
...
    /**
     * @ORM\ManyToMany(targetEntity="MediaObject", inversedBy="galleries", cascade={"persist", "remove"})
     * @ ORM\JoinTable(name="images_galleries")
     *
     */
    private $images;
...

Я собираюсь в конечном итоге с 2 таблицами (images_galleries и gallery_mediaobject) ... тогда я бы сделал работу с Speci c контроллер "GalleryController", я думаю, что я могу обойтись, но, как я уже говорил, я не думаю, что это лучшее решение

есть ли решение уже разработано?

...