0

問題が発生しています。専門家の助けを借りて感謝します。

私はエンティティを持っています:

製品

// src/Acme/DemoBundle/Entity/Product.php

/**
 * @ORM\Entity
 * @ORM\Table(name="products")
 */
class Product
{
   ...
   /**
     * @ORM\Column(name="file_uuid", unique=true, nullable=true)
     * @ORM\OneToOne(targetEntity="Acme\DemoBundle\Entity\File")
     * @ORM\JoinColumn(name="file_uuid", referencedColumnName="uuid")
     *
     */
    protected $file;

    /**
     * @ORM\OneToMany(targetEntity="Acme\DemoBundle\Entity\Image", mappedBy="product")
     *
     * @var ArrayCollection Collection of Image entities
     */
    protected $images;
    ...
}

ファイル

// src/Acme/DemoBundle/Entity/File.php

/**
 * @ORM\Entity
 * @ORM\Table(name="product_files")
 */
class File
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     */
    protected $id;

    /**
     * @ORM\Column(name="uuid", type="string", length=64)
     */
    protected $uuid;

    /**
     * @ORM\Column(name="product_id")
     */
    protected $product;

    ...
}

画像

// src/Acme/DemoBundle/Entity/Image.php

/**
 * @ORM\Entity
 * @ORM\Table(name="product_images")
 */
class Image extends File
{

    /**
     * @ORM\ManyToOne(targetEntity="Acme\DemoBundle\Entity\Product", inversedBy="images")
     * @ORM\JoinColumn(name="product_id", referencedColumnName="id")
     */
    protected $product;

    /**
     * @ORM\Column(name="extension", type="string")
     */
    protected $extension;

    ...
}

私は正しいSQLを持っています:

product_files
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| uuid        | varchar(64)  | NO   |     | NULL    |                |
| product_id  | varchar(255) | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+


product_images
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| uuid        | varchar(64)  | NO   |     | NULL    |                |
| product_id  | varchar(255) | NO   |     | NULL    |                |
| extension   | varchar(64)  | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

しかし、アプリを実行すると、エラーが発生しました。

An exception has been thrown during the rendering of a template ("Notice: Undefined index: product in .../vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1575") in AcmeDemoBundle:Product:edit.html.twig at line 24.

どこが間違っていますか?

edit.html.twig では、製品の画像を表示しようとしています。

$productのファイルエンティティ アノテーションから削除するこの問題を回避できます。

@ORM\Column(name="product_id")

しかし、doctrine:schema:updateの後、 product_imagesテーブルのproduct_idフィールドが失われました。

そして私が欲しいもの:

  • 1つの製品につき1つのファイルを持つ
  • 1 つの製品に複数の画像を含める
4

1 に答える 1