バージョン選択

フォーラム

メニュー

オンライン状況

71 人のユーザが現在オンラインです。 (58 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 70
rafta もっと...

サイト内検索

質問 > 管理機能 > 特定の商品種別の商品の購入時に新規テーブルにdtb_order_itemと同じデータを入れたい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
dauto_ec
投稿日時: 2019/7/6 1:18
対応状況: 開発中
新米
登録日: 2019/7/5
居住地:
投稿: 5
特定の商品種別の商品の購入時に新規テーブルにdtb_order_itemと同じデータを入れたい
▼テンプレート
[EC-CUBE] EC-CUBE 4.0.2
[レンタルサーバ] KAGOYA CLOUD 2
[OS] CentOS 7
[PHP] PHP 7.1.25
[データベース] MySQL 5.7.26
[WEBサーバ] Apache 2.4.6
[現象] dtb_order_itemにデータを挿入する際、特定の商品種別に含まれる商品が選択された場合別の新規テーブルに同じデータを追加する為、下記のEntityとRepositoryを追加しました。
 しかし、カラムは追加されるのですが、データが追加されません。何を変更すればいいのでしょうか。



Ticket.php(Entity)

<?php

/*
* This file is part of EC-CUBE
*
* Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
*
* http://www.lockon.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Eccube\Entity;

use Doctrine\ORM\Mapping as ORM;
use Eccube\Entity\Master\OrderItemType;
use Eccube\Entity\Master\RoundingType;
use Eccube\Entity\Master\TaxDisplayType;
use Eccube\Entity\Master\TaxType;

if (!class_exists('\Eccube\Entity\Ticket')) {
/**
* Ticket
*
* @ORM\Table(name="dtb_ticket")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255)
* @ORM\HasLifecycleCallbacks()
* @ORM\Entity(repositoryClass="Eccube\Repository\TicketRepository")
*/
class Ticket extends \Eccube\Entity\AbstractEntity implements ItemInterface
{
use PointRateTrait;

/**
* Get price IncTax
*
* @return string
*/
public function getPriceIncTax()
{
// 税表示区分が税込の場合は, priceに税込金額が入っている.
if ($this->TaxDisplayType && $this->TaxDisplayType->getId() == TaxDisplayType::INCLUDED) {
return $this->price;
}

return $this->price + $this->tax;
}

/**
* @return integer
*/
public function getTotalPrice()
{
return $this->getPriceIncTax() * $this->getQuantity();
}

/**
* @return integer
*/
public function getOrderItemTypeId()
{
if (is_object($this->getOrderItemType())) {
return $this->getOrderItemType()->getId();
}

return null;
}

/**
* 商品明細かどうか.
*
* @return boolean 商品明細の場合 true
*/
public function isProduct()
{
return $this->getOrderItemTypeId() === OrderItemType::PRODUCT;
}

/**
* 送料明細かどうか.
*
* @return boolean 送料明細の場合 true
*/
public function isDeliveryFee()
{
return $this->getOrderItemTypeId() === OrderItemType::DELIVERY_FEE;
}

/**
* 手数料明細かどうか.
*
* @return boolean 手数料明細の場合 true
*/
public function isCharge()
{
return $this->getOrderItemTypeId() === OrderItemType::CHARGE;
}

/**
* 値引き明細かどうか.
*
* @return boolean 値引き明細の場合 true
*/
public function isDiscount()
{
return $this->getOrderItemTypeId() === OrderItemType::DISCOUNT;
}

/**
* 税額明細かどうか.
*
* @return boolean 税額明細の場合 true
*/
public function isTax()
{
return $this->getOrderItemTypeId() === OrderItemType::TAX;
}

/**
* ポイント明細かどうか.
*
* @return boolean ポイント明細の場合 true
*/
public function isPoint()
{
return $this->getOrderItemTypeId() === OrderItemType::POINT;
}

/**
* @var integer
*
* @ORM\Column(name="id", type="integer", options={"unsigned":true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="product_name", type="string", length=255)
*/
private $product_name;

/**
* @var string|null
*
* @ORM\Column(name="product_code", type="string", length=255, nullable=true)
*/
private $product_code;

/**
* @var string|null
*
* @ORM\Column(name="class_name1", type="string", length=255, nullable=true)
*/
private $class_name1;

/**
* @var string|null
*
* @ORM\Column(name="class_name2", type="string", length=255, nullable=true)
*/
private $class_name2;

/**
* @var string|null
*
* @ORM\Column(name="class_category_name1", type="string", length=255, nullable=true)
*/
private $class_category_name1;

/**
* @var string|null
*
* @ORM\Column(name="class_category_name2", type="string", length=255, nullable=true)
*/
private $class_category_name2;

/**
* @var string
*
* @ORM\Column(name="price", type="decimal", precision=12, scale=2, options={"default":0})
*/
private $price = 0;

/**
* @var string
*
* @ORM\Column(name="quantity", type="decimal", precision=10, scale=0, options={"default":0})
*/
private $quantity = 0;

/**
* @var string
*
* @ORM\Column(name="tax", type="decimal", precision=10, scale=0, options={"default":0})
*/
private $tax = 0;

/**
* @var string
*
* @ORM\Column(name="tax_rate", type="decimal", precision=10, scale=0, options={"unsigned":true,"default":0})
*/
private $tax_rate = 0;

/**
* @var int|null
*
* @ORM\Column(name="tax_rule_id", type="smallint", nullable=true, options={"unsigned":true})
*/
private $tax_rule_id;

/**
* @var string|null
*
* @ORM\Column(name="currency_code", type="string", nullable=true)
*/
private $currency_code;

/**
* @var string|null
*
* @ORM\Column(name="processor_name", type="string", nullable=true)
*/
private $processor_name;

/**
* @var \Eccube\Entity\Order
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Order", inversedBy="Ticket")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="order_id", referencedColumnName="id")
* })
*/
private $Order;

/**
* @var \Eccube\Entity\Product
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Product")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="id")
* })
*/
private $Product;

/**
* @var \Eccube\Entity\ProductClass
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\ProductClass")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_class_id", referencedColumnName="id")
* })
*/
private $ProductClass;

/**
* @var \Eccube\Entity\Shipping
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Shipping", inversedBy="Ticket")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="shipping_id", referencedColumnName="id")
* })
*/
private $Shipping;

/**
* @var \Eccube\Entity\Master\RoundingType
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Master\RoundingType")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="rounding_type_id", referencedColumnName="id")
* })
*/
private $RoundingType;

/**
* @var \Eccube\Entity\Master\TaxType
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Master\TaxType")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="tax_type_id", referencedColumnName="id")
* })
*/
private $TaxType;

/**
* @var \Eccube\Entity\Master\TaxDisplayType
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Master\TaxDisplayType")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="tax_display_type_id", referencedColumnName="id")
* })
*/
private $TaxDisplayType;

/**
* @var \Eccube\Entity\Master\OrderItemType
*
* @ORM\ManyToOne(targetEntity="Eccube\Entity\Master\OrderItemType")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="order_item_type_id", referencedColumnName="id")
* })
*/
private $OrderItemType;

/**
* Get id.
*
* @return int
*/
public function getId()
{
return $this->id;
}

/**
* Set productName.
*
* @param string $productName
*
* @return Ticket
*/
public function setProductName($productName)
{
$this->product_name = $productName;

return $this;
}

/**
* Get productName.
*
* @return string
*/
public function getProductName()
{
return $this->product_name;
}

/**
* Set productCode.
*
* @param string|null $productCode
*
* @return Ticket
*/
public function setProductCode($productCode = null)
{
$this->product_code = $productCode;

return $this;
}

/**
* Get productCode.
*
* @return string|null
*/
public function getProductCode()
{
return $this->product_code;
}

/**
* Set className1.
*
* @param string|null $className1
*
* @return Ticket
*/
public function setClassName1($className1 = null)
{
$this->class_name1 = $className1;

return $this;
}

/**
* Get className1.
*
* @return string|null
*/
public function getClassName1()
{
return $this->class_name1;
}

/**
* Set className2.
*
* @param string|null $className2
*
* @return Ticket
*/
public function setClassName2($className2 = null)
{
$this->class_name2 = $className2;

return $this;
}

/**
* Get className2.
*
* @return string|null
*/
public function getClassName2()
{
return $this->class_name2;
}

/**
* Set classCategoryName1.
*
* @param string|null $classCategoryName1
*
* @return Ticket
*/
public function setClassCategoryName1($classCategoryName1 = null)
{
$this->class_category_name1 = $classCategoryName1;

return $this;
}

/**
* Get classCategoryName1.
*
* @return string|null
*/
public function getClassCategoryName1()
{
return $this->class_category_name1;
}

/**
* Set classCategoryName2.
*
* @param string|null $classCategoryName2
*
* @return Ticket
*/
public function setClassCategoryName2($classCategoryName2 = null)
{
$this->class_category_name2 = $classCategoryName2;

return $this;
}

/**
* Get classCategoryName2.
*
* @return string|null
*/
public function getClassCategoryName2()
{
return $this->class_category_name2;
}

/**
* Set price.
*
* @param string $price
*
* @return Ticket
*/
public function setPrice($price)
{
$this->price = $price;

return $this;
}

/**
* Get price.
*
* @return string
*/
public function getPrice()
{
return $this->price;
}

/**
* Set quantity.
*
* @param string $quantity
*
* @return Ticket
*/
public function setQuantity($quantity)
{
$this->quantity = $quantity;

return $this;
}

/**
* Get quantity.
*
* @return string
*/
public function getQuantity()
{
return $this->quantity;
}

/**
* @return string
*/
public function getTax()
{
return $this->tax;
}

/**
* @param string $tax
*
* @return $this
*/
public function setTax($tax)
{
$this->tax = $tax;

return $this;
}

/**
* Set taxRate.
*
* @param string $taxRate
*
* @return Ticket
*/
public function setTaxRate($taxRate)
{
$this->tax_rate = $taxRate;

return $this;
}

/**
* Get taxRate.
*
* @return string
*/
public function getTaxRate()
{
return $this->tax_rate;
}

/**
* Set taxRuleId.
*
* @param int|null $taxRuleId
*
* @return Ticket
*/
public function setTaxRuleId($taxRuleId = null)
{
$this->tax_rule_id = $taxRuleId;

return $this;
}

/**
* Get taxRuleId.
*
* @return int|null
*/
public function getTaxRuleId()
{
return $this->tax_rule_id;
}

/**
* Get currencyCode.
*
* @return string
*/
public function getCurrencyCode()
{
return $this->currency_code;
}

/**
* Set currencyCode.
*
* @param string|null $currencyCode
*
* @return Ticket
*/
public function setCurrencyCode($currencyCode = null)
{
$this->currency_code = $currencyCode;

return $this;
}

/**
* Get processorName.
*
* @return string
*/
public function getProcessorName()
{
return $this->processor_name;
}

/**
* Set processorName.
*
* @param string|null $processorName
*
* @return $this
*/
public function setProcessorName($processorName = null)
{
$this->processor_name = $processorName;

return $this;
}

/**
* Set order.
*
* @param \Eccube\Entity\Order|null $order
*
* @return Ticket
*/
public function setOrder(\Eccube\Entity\Order $order = null)
{
$this->Order = $order;

return $this;
}

/**
* Get order.
*
* @return \Eccube\Entity\Order|null
*/
public function getOrder()
{
return $this->Order;
}

public function getOrderId()
{
if (is_object($this->getOrder())) {
return $this->getOrder()->getId();
}

return null;
}

/**
* Set product.
*
* @param \Eccube\Entity\Product|null $product
*
* @return Ticket
*/
public function setProduct(\Eccube\Entity\Product $product = null)
{
$this->Product = $product;

return $this;
}

/**
* Get product.
*
* @return \Eccube\Entity\Product|null
*/
public function getProduct()
{
return $this->Product;
}

/**
* Set productClass.
*
* @param \Eccube\Entity\ProductClass|null $productClass
*
* @return Ticket
*/
public function setProductClass(\Eccube\Entity\ProductClass $productClass = null)
{
$this->ProductClass = $productClass;

return $this;
}

/**
* Get productClass.
*
* @return \Eccube\Entity\ProductClass|null
*/
public function getProductClass()
{
return $this->ProductClass;
}

/**
* Set shipping.
*
* @param \Eccube\Entity\Shipping|null $shipping
*
* @return Ticket
*/
public function setShipping(\Eccube\Entity\Shipping $shipping = null)
{
$this->Shipping = $shipping;

return $this;
}

/**
* Get shipping.
*
* @return \Eccube\Entity\Shipping|null
*/
public function getShipping()
{
return $this->Shipping;
}

/**
* @return RoundingType
*/
public function getRoundingType()
{
return $this->RoundingType;
}

/**
* @param RoundingType $RoundingType
*/
public function setRoundingType(RoundingType $RoundingType = null)
{
$this->RoundingType = $RoundingType;

return $this;
}

/**
* Set taxType
*
* @param \Eccube\Entity\Master\TaxType $taxType
*
* @return Ticket
*/
public function setTaxType(\Eccube\Entity\Master\TaxType $taxType = null)
{
$this->TaxType = $taxType;

return $this;
}

/**
* Get taxType
*
* @return \Eccube\Entity\Master\TaxType
*/
public function getTaxType()
{
return $this->TaxType;
}

/**
* Set taxDisplayType
*
* @param \Eccube\Entity\Master\TaxDisplayType $taxDisplayType
*
* @return Ticket
*/
public function setTaxDisplayType(\Eccube\Entity\Master\TaxDisplayType $taxDisplayType = null)
{
$this->TaxDisplayType = $taxDisplayType;

return $this;
}

/**
* Get taxDisplayType
*
* @return \Eccube\Entity\Master\TaxDisplayType
*/
public function getTaxDisplayType()
{
return $this->TaxDisplayType;
}

/**
* Set orderItemType
*
* @param \Eccube\Entity\Master\OrderItemType $orderItemType
*
* @return Ticket
*/
public function setOrderItemType(\Eccube\Entity\Master\OrderItemType $orderItemType = null)
{
$this->OrderItemType = $orderItemType;

return $this;
}

/**
* Get orderItemType
*
* @return \Eccube\Entity\Master\OrderItemType
*/
public function getOrderItemType()
{
return $this->OrderItemType;
}
}
}

TicketRepository.php

<?php

/*
* This file is part of EC-CUBE
*
* Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
*
* http://www.lockon.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Eccube\Repository;

use Eccube\Entity\Ticket;
use Symfony\Bridge\Doctrine\RegistryInterface;

/**
* TicketRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class TicketRepository extends AbstractRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Ticket::class);
}
}
468
投稿日時: 2019/7/8 8:18
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1791
Re: 特定の商品種別の商品の購入時に新規テーブルにdtb_order_itemと同じデータを入れたい
コントローラークラス、またはサービスクラスへの変更は加えられていないのでしょうか?
(追加したエンティティに対して、値をセットする処理をどこかに追加する必要があると思います)


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

dauto_ec
投稿日時: 2019/7/9 0:01
対応状況: −−−
新米
登録日: 2019/7/5
居住地:
投稿: 5
Re: 特定の商品種別の商品の購入時に新規テーブルにdtb_order_itemと同じデータを入れたい
一度ShippingMultipleControllerに自作したエンティティを追加し受注テーブルの参照先を変更したのですが、中の処理は変わらなかった為、現時点ではどこに処理を書き込めばいいか分かりません。dtb_order_oitemにデータを保存している処理を書き換えたいのですが、その処理をしている構文はどのphpにあるのでしょうか。
468
投稿日時: 2019/7/9 9:29
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1791
Re: 特定の商品種別の商品の購入時に新規テーブルにdtb_order_itemと同じデータを入れたい
受注データが初めて記録されているのは
/src/Eccube/Controller/ShoppingController.php function index()内の
$Order = $this->orderHelper->initializeOrder($Cart, $Customer);

ではないでしょうか?
セッション内のカートから受注データを生成しています。

$this->orderHelperは
\src\Eccube\Service\OrderHelper.php に記述がありますので、
ソース内のfunction initializeOrder()を確認すると
// 明細情報の設定
$OrderItems = $this->createOrderItemsFromCartItems($Cart->getCartItems());

ような記述があり、function createOrderItemsFromCartItems()で
$CartItemsから$OrderItemsを用意しているようです。

なので、dtb_order_itemのデータを作り出しているのは上記の箇所かと思います。
厳密に言うと、メモリ上にエンティティを格納しているだけでデータベースには書き込まれていないと思いますが、
この時点で自作したエンティティにもデータを格納しておく必要があると思います。

そうしておけば、処理が進んでShoppingController.phpの
$this->entityManager->flush();

でまとめてDBに書き込みが行われると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


ec-cube.co

統計情報

総メンバー数は46,391名です
総投稿数は92,282件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1904
4
468
1791
5
yuh
1594
6
red
1312
7
umebius
1296
8
fukap
907
9
tsuji
840
10
shutta
835
11 ramrun 789
12
tao_s
758
13
h_tanaka
746
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.