問題が発生しています。専門家の助けを借りて感謝します。
私はエンティティを持っています:
製品
// 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 つの製品に複数の画像を含める