バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう(解決済み)

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
投稿日時: 2016/6/13 13:54
対応状況: 確認中
EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう(解決済み)
お世話になっております。

EC-CUBE:3.0.10
DB:MySQL 10.1.13
WEB:Apache/2.4.17
PHP:5.6.21


現在、注文番号のカスタマイズを行いカスタマイズロジックは
想定通り動いており実行したのですが注文後のメールで注文番号が
空欄で(何も表示されずに)配信されております。
カスタマイズ後の項目に変更しentityにも追加をしておりましたが
DBでnullとなっていましたので当然何も表示されないとは思います。

そこで、処理を順々に追いながら処理の解析を進めていましたが以下の部分で
詰まってしまいましたので追加質問をさせていただきます。


対象はdumpにより表示させながら行っておりまして
該当ロジックの前後でorder_numberがnullとなっていたため
該当ロジック内が現在の不具合対象ロジックと思います。

以下です

vendor\doctrine\orm\lib\Doctrine\ORM
┗UnitOfWork.php
2041行目付近のdoRefreshメソッド内

$this->getEntityPersister($class->name)->refresh(
  array_combine($class->getIdentifierFieldNames(),      $this->entityIdentifiers[$oid]), $entity);

ここになります。

この先はどこが呼び出されるのか追えませんでした。
お分かりになる方がいましたら、ご教示いただければ幸いです。
よろしくお願いいたします。
ゲスト
投稿日時: 2016/6/13 15:43
対応状況: 確認中
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
同機能のカスタマイズはShoppingService.phpの
registerPreOrderメソッド内で行っております。

該当メソッドの戻りが同PHP内createOrderメソッドと理解し
createOrderの戻りがShoppingController.phpとなるかと思っております。

直後121行目付近の
// 受注関連情報を最新状態に更新
$app['orm.em']->refresh($Order);

こちらの呼び出し先は
\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php
の582行目付近のrefreshメソッドと解釈しました。

それぞれ認識としてはあっているでしょうか?
DELIGHT
投稿日時: 2016/6/13 16:05
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
引用:
それぞれ認識としてはあっているでしょうか?

あっています。

エスパーですが、下記ファイルにorder_numberに関するマッピングを追加しましたか?
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Resource/doctrine/Eccube.Entity.Order.dcm.yml


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/13 16:18
対応状況: −−−
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
ご回答ありがとうございます。

引用:

エスパーですが、下記ファイルにorder_numberに関するマッピングを追加しましたか?
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Resource/doctrine/Eccube.Entity.Order.dcm.yml


上記には追記してあります。
順に追って行って、本題の部分のロジックがわからず困っております。

ShoppingController内以下の部分の前後でorder_numberがnullとなっており
// 受注関連情報を最新状態に更新
$app['orm.em']->refresh($Order); 120行目付近

この先さらに追っていくと
EntityManager内以下の部分の前後でnullとなりました
$this->unitOfWork->refresh($entity); 590行目付近

そして、その先本題の部分の前後でnullとなっていました。
そこのとび先がわからずという形です。
DELIGHT
投稿日時: 2016/6/13 16:31
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
実際に試してはいませんが、ソースコードを見た限りでは
Persisters\BasicEntityPersister
Persisters\SingleTablePersister
Persisters\JoinedSubclassPersister
Persisters\UnionSubclassPersister
のどれかのrefreshメソッドが呼ばれています。

EntityManager::refreshメソッドは、渡されたエンティティをデータベースの最新の状態に更新する処理だと思います。
そのため、ShoppingController::index()内のEntityManager::refresh()時点で、データベース上のorder_numberがnullになっていませんか?

(私もdoctrineにそこまで明るくないため、EntityManager::refresh()の理解が違っている可能性はあります。)


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/13 17:28
対応状況: −−−
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
引用:
Persisters\BasicEntityPersister

ここのrefreshが呼ばれているようです。

また、Apacheのログに
[Mon Jun 13 14:17:14.893317 2016] [:error] [pid 9388:tid 1848] [client ::1:63571] PHP Fatal error: Call to undefined function Doctrine\\ORM\\getOrderNumber() in C:\\xampp\\htdocs\\eccube-3.0.10\\vendor\\doctrine\\orm\\lib\\Doctrine\\ORM\\UnitOfWork.php on line 2060, referer: http://localhost/eccube-3.0.10/html/cart
[Mon Jun 13 14:17:32.111451 2016] [:error] [pid 9388:tid 1848] [client ::1:63576] PHP Fatal error: Call to undefined function Doctrine\\ORM\\getOrderNumber() in C:\\xampp\\htdocs\\eccube-3.0.10\\vendor\\doctrine\\orm\\lib\\Doctrine\\ORM\\UnitOfWork.php on line 2057, referer: http://localhost/eccube-3.0.10/html/cart
が出ていました。
ゲスト
投稿日時: 2016/6/13 18:16
対応状況: 確認中
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
引用:

エスパーですが、下記ファイルにorder_numberに関するマッピングを追加しましたか?
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Resource/doctrine/Eccube.Entity.Order.dcm.yml


今回、0始まりとなる可能性もあるため
現状int系ではだめかと思いvarcharとしていますが
その場合の定義は以下であっているでしょうか?

ここが誤りの場合の不具合はあるのでしょうか?

order_number:
type: string
nullable: false
unsigned: false
DELIGHT
投稿日時: 2016/6/13 19:01
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
引用:
その場合の定義は以下であっているでしょうか?

ここが誤りの場合の不具合はあるのでしょうか?

order_number:
type: string
nullable: false
unsigned: false


問題ないと思います。(文字列型なのにunsignedが設定されているのは変ですが、設定されていても問題ないことは手元で確認しました。)



現在の問題点を整理させて下さい。今はどこで問題が発生しているのでしょうか?

・注文フローでエラーが発生しているのでしょうか?
 それとも注文自体は完了するがorder_numberがnullになるのでしょうか?

・order_numberはDBに登録されますか?
 ShoppingService::registerPreOrder()内のEntityManager::flush()直後にexitして下さい。
 DBの値を直接確認してorder_numberがnullなら、
 そもそも何か(マッピングとかエンティティとか)が間違ってます。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/13 19:10
対応状況: −−−
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
引用:

現在の問題点を整理させて下さい。今はどこで問題が発生しているのでしょうか?

・注文フローでエラーが発生しているのでしょうか?
 それとも注文自体は完了するがorder_numberがnullになるのでしょうか?



こちらとしては後者になります。
注文は完了しメールも届くのですが、order_number(カスタマイズ後の注文番号)がnullとなってしまいメールにも受注完了後のマスタにも番号の表示はされないという状況です。

引用:

・order_numberはDBに登録されますか?
 ShoppingService::registerPreOrder()内のEntityManager::flush()直後にexitして下さい。
 DBの値を直接確認してorder_numberがnullなら、
 そもそも何か(マッピングとかエンティティとか)が間違ってます。

こちらですが、flush後にorder_numberを設定させる処理を行っているためこの時点ではnullとなります。
EntityManager::flush()で本来の連番の注文番号が採番されそれを使用して行っているため。
ゲスト
投稿日時: 2016/6/13 19:13
対応状況: −−−
Re: EC-CUBE3にてカスタマイズを行った項目がnullとなってしまう
エンティティは以下を修正しております。
Order.phpの追記部分
/**
* @var String
*/
private $order_number;
  ・・・
  ・・・
/**
* Set order_number
*
* @param string $orderNumber
* @return Order
*/
public function setOrderNumber($orderNumber)
{
$this->order_number = $orderNumber;

return $this;
}

/**
* Get order_number
*
* @return integer
*/
public function getOrderNumber()
{
return $this->order_number;
}


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


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,073名です
総投稿数は110,023件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.