EC-CUBE4で1対多のリレーションについて、解説を進めます。
リレーションの設定はEntityファイル内で設定し、データベースへと反映させます。
EC-CUBE4のソースコードを見ながら解説していきます。
EC-CUBE4のデフォルト機能である、受注と受注アイテムの構成にて説明を行います。
Orderエンティティ
/**
* @var \Doctrine\Common\Collections\Collection|OrderItem[]
*
* @ORM\OneToMany(targetEntity="Eccube\Entity\OrderItem", mappedBy="Order", cascade={"persist","remove"})
*/
private $OrderItems;
まず、受注の実体であるOrderエンティティを見ていきます。
@ORM\OneToManyで1対多の構成であると書いています。
1対多の構成とは、受注データはたくさんの商品を持っているという事です。
targetEntityで1対多の構成を取るEntityファイルを指定します。
今回は、Eccube\Entity\OrderItemとなります。
mappedByで本クラスのOrderを指定。
OrderItemエンティティ
/**
* @var \Eccube\Entity\Order
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Order", inversedBy="OrderItems")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="order_id", referencedColumnName="id")
* })
*/
private $Order;
@ORM\ManyToOneで、OrderItem自身はOrderに対してManyの関係であり、1つの受注(Order)に対して結びつく事を表しています。
@ORM\JoinColumnでorder_idはOrderのidを保存するカラムである事を表しています。
以上です。
スポンサーリンク
スポンサーリンク