質問 > その他 > 注文番号について |
その他
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
blue3 |
投稿日時: 2016/6/30 9:37
対応状況: −−−
|
新米 ![]() ![]() 登録日: 2016/6/24 居住地: 投稿: 9 |
Re: 注文番号について 日付はcreateDateから取得もシステム日付から取得も変わらないということを忘れていたためシステム日付から取得するように変更し、上記課題は解決できました。
形式は変更し、mmddyyとランダム4桁(0〜9を10の配列に格納しシャッフルし並び替え後の4桁を取得する形です) 以下が、作成したコードになります。 public function getCustomizeOrderId() { $num = 4; $array = range(0, 9); // 注文日をシステム日付から取得する $today = date("y/m/d"); $year = substr($today, 0, 2); $month = substr($today, 3, 2); $day = substr($today, -2); $flg = 0; while ($flg == 0) { shuffle($array); $orderNum = substr(implode($array), 0, $num); // 注文番号を10桁に結合する(月+日+年+ランダム4桁) $orderId = $month.$day.$year.$orderNum; // TODO DBを確認し、同じ注文番号がないこと。 if (カウント結果 == 0) { $flg = 1; } } return $orderId; } しかし、このままではランダムの並べ替えのため必ずしもかぶりが出ないとは限りません。日付違いでのランダム部分の被りはよいのですが… そのため、一度結合させたのちにDBに重複する注文番号が存在しないことを確認しないといけません。 そこで、以下のようなSQLで同じ注文番号がないことを確認します。 SELECT COUNT(o.order_number) FROM dtb_order o WHERE o.order_number = 結合した注文番号 order_numberは別途自分で作成した、カスタマイズした注文番号が格納されているカラムです。 この場合、ここで書くSQLはどのように書けるのでしょうか? ヒントのご教示をいただければ幸いです。 よろしくお願いいたします。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
![]() |
blue3 | 2016/6/29 14:50 |
» ![]() |
blue3 | 2016/6/30 9:37 |
![]() |
blue3 | 2016/6/30 9:55 |
![]() |
blue3 | 2016/6/30 12:00 |
![]() |
yuh | 2016/6/30 12:42 |
![]() |
blue3 | 2016/6/30 13:32 |
