質問編集履歴
3
コメントに対する追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -48,4 +48,46 @@
|
|
48
48
|
$countOrderId = $qb
|
49
49
|
->getQuery()
|
50
50
|
->getSingleResult();
|
51
|
+
```
|
52
|
+
|
53
|
+
2016/06/30 14:55 追記
|
54
|
+
```
|
55
|
+
$em = $this->app['orm.em'];
|
56
|
+
$num = 4;←ランダム取得は4桁とする
|
57
|
+
$array = range(0, 9);←0~9までを配列に格納する
|
58
|
+
|
59
|
+
// 注文日をシステム日付から取得する
|
60
|
+
$today = date("y/m/d");←システム日付をyymmddの形式で取得
|
61
|
+
$year = substr($today, 0, 2);←日付のyy部分を取得
|
62
|
+
$month = substr($today, 3, 2);←日付のmm部分を取得
|
63
|
+
$day = substr($today, -2);←日付のdd部分を取得
|
64
|
+
|
65
|
+
$flg = 0;←重複フラグを設定
|
66
|
+
|
67
|
+
while ($flg == 0) {←重複フラグが0の間ループを回す
|
68
|
+
shuffle($array);←0~9の配列をシャッフルする
|
69
|
+
$orderNum = substr(implode($array), 0, $num);←シャッフルした配列を左から4桁分取得する
|
70
|
+
|
71
|
+
// 注文番号を10桁に結合する(月+日+年+ランダム4桁)
|
72
|
+
$orderId = $month.$day.$year.$orderNum;←mmddyy+ランダム4桁で結合する
|
73
|
+
|
74
|
+
// チェックデジットを取得する
|
75
|
+
$cd = $this->editOrderNumber($orderId);
|
76
|
+
$editOrderNum = $orderId.$cd;
|
77
|
+
|
78
|
+
// TODO DBを確認し、同じ注文番号がないこと。
|
79
|
+
$qb = $em->getRepository('Eccube\Entity\Order')
|
80
|
+
->createQueryBuilder('o')
|
81
|
+
->select('COUNT(o.order_number)')
|
82
|
+
->where('o.order_number = :orderId')
|
83
|
+
->setParameter('orderId', $editOrderNum)
|
84
|
+
->setMaxResults(1);
|
85
|
+
$countOrderId = $qb
|
86
|
+
->getQuery()
|
87
|
+
->getResult();
|
88
|
+
if ($countOrderId == 0) {←カスタマイズした注文番号が0件の場合はフラグを立てる。1件存在する場合は再度処理を行うためフラグ操作はしない。
|
89
|
+
$flg = 1;
|
90
|
+
}
|
91
|
+
}
|
92
|
+
return $editOrderNum;
|
51
93
|
```
|
2
コメントに対する追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -34,4 +34,18 @@
|
|
34
34
|
ご存知の方がいらっしゃいましたらご教示お願いいたします。
|
35
35
|
ヒントでも構いません。
|
36
36
|
|
37
|
-
よろしくお願いいたします。
|
37
|
+
よろしくお願いいたします。
|
38
|
+
|
39
|
+
追記
|
40
|
+
・QueryBuilderで作成した新SQL
|
41
|
+
```
|
42
|
+
$qb = $em->getRepository('Eccube\Entity\Order')
|
43
|
+
->createQueryBuilder('o')
|
44
|
+
->select('COUNT(o.order_number)')
|
45
|
+
->where('o.order_number = :orderId')
|
46
|
+
->setParameter('orderId', $orderId)
|
47
|
+
->setMaxResults(1);
|
48
|
+
$countOrderId = $qb
|
49
|
+
->getQuery()
|
50
|
+
->getSingleResult();
|
51
|
+
```
|
1
誤字ありのため修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
->createQueryBuilder('o')
|
16
16
|
->select('COUNT(o.order_number)')
|
17
17
|
->where('o.order_number = :orderId')
|
18
|
-
->setParameter('orderId',
|
18
|
+
->setParameter('orderId', $orderId);
|
19
19
|
$countOrderId = $qb
|
20
20
|
->getQuery()
|
21
21
|
->getSingleResult();
|