EC-CUBE4でリレーションについて、解説を進めます。
リレーションの設定はEntityファイル内で設定し、データベースへと反映させます。
EC-CUBE4のソースコードを見ながら解説していきます。
1対1構成
1対1の構成は、商品規格を管理するdtb_product_classテーブルと商品規格の在庫量を管理するdtb_product_stockテーブルにあります。
ProductClassのEntity
以下のソースコードは262〜267行目の抜粋です。
/**
* @var \Eccube\Entity\ProductStock
*
* @ORM\OneToOne(targetEntity="Eccube\Entity\ProductStock", mappedBy="ProductClass", cascade={"persist","remove"})
*/
private $ProductStock;
@ORM\OneToOneで1対1の構成であると書いています。
targetEntityで1対1の構成を取るEntityファイルを指定します。
mappedByで本クラスのProductClassを指定。
cascadeでpersistとremoveを指定。
persistはデータベースに保存する際に使う関数です、productClassを作成する際は、dtb_product_stockも作成する必要があるという事です。
removeはこのProductClassが削除されたら、ProductStockも削除するという事です。
private $ProdutStockでこのテーブルカラムにアクセスする際の変数を宣言します。
ProductStockのEntity
以下のソースコードは、92〜100行目です。
/**
* @var \Eccube\Entity\ProductClass
*
* @ORM\OneToOne(targetEntity="Eccube\Entity\ProductClass", inversedBy="ProductStock")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_class_id", referencedColumnName="id")
* })
*/
private $ProductClass;
inveredByでマッピング先の変数名を指定しています。
@ORM\JoinColumns・・・で、ProductClassと紐つけています。nameでカラム名、referencedColumnNameでdtb_product_classのidと紐つけています。
以上です。
スポンサーリンク
スポンサーリンク