Сопоставление продуктов и изображений Symfony2 и Doctrine2 неэффективно для администрирования - PullRequest
2 голосов
/ 14 января 2012

В моем приложении Symfony2 у меня должен быть продукт, который должен иметь несколько изображений, но только одно должно быть основным изображением, которое будет идентифицировать продукт между 20 или более продуктами на одной странице. Остальные изображения будут отображаться, когда пользователь открывает конкретный продукт, и отображаются все сведения о нем, включая остальные изображения. В основном, как работает большинство продуктовых сайтов.

Я отобразил это как:

/**
 * @ORM\Entity()
 * @ORM\Table(name="product")
 * @ORM\HasLifecycleCallbacks()
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string")
     */
    protected $title;

    /**
     * @ORM\ManyToMany(targetEntity="Productimage")
     * @ORM\JoinTable(name="productimage_map",
     *      joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="image_id", referencedColumnName="id")}
     *      )
     */
    protected $images;    

    public function __construct()
    {
        $this->images = new \Doctrine\Common\Collections\ArrayCollection();
    }
}

Изображения продуктов Entity:

/**
 * @ORM\Entity(repositoryClass="Webmuch\ShopBundle\Repository\ProductimageRepository")
 * @ORM\Table(name="productimage")
 * @ORM\HasLifecycleCallbacks()
 */
class Productimage
{
   /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

   /**
    * @ORM\Column(type="string", length=255)
    */
    protected $imagePath;

   /**
    * @ORM\Column(type="datetime")
    */
    protected $created;

   /**
    * @ORM\Column(type="boolean")
    */      
    protected $mainImage;
}

Работает нормально, но когда я создаю форму для создания нового элемента, он показывает множественный выбор со всеми строками таблицы Itemimage. Как создать систему, в которой я могу просто загружать изображения из самой формы создания элемента, а не выбирать, какие изображения сопоставлять с элементом, из элемента формы множественного выбора, содержащего тысячи изображений.

Я также приложил изображение того, что я пытаюсь объяснить. В настоящее время только 2 изображения, но они станут тысячами в нескольких сотнях продуктов.

Надеюсь, мне удалось объяснить, в чем проблема. Это очень смущает меня. Пожалуйста, помогите мне с этим.

Также несколько элементов выбора показывают идентификаторы, я хочу, чтобы они были названиями. Есть идеи, как мне это сделать?

Спасибо! Я ценю всю помощь.

cut out from the rendered form

1 Ответ

1 голос
/ 14 января 2012

Вы должны добавить свойство mainImage, которое напрямую ссылается на вашу таблицу изображений, а не на логический флаг, который вы используете сейчас.

Вы можете указать, какой заголовок каждого изображения вы хотите указать, предоставив опцию 'property' => 'title' для типа формы.

...