

EC-CUBE3.0.10において、注文番号をカスタマイズしランダムにて設定しているためすでに存在している注文番号との重複チェックを行う必要があります。  
まず、以下のようなSQLを作成しこれをQueryBuilderにて作成しました。

・作成したSQL

[code]

    SELECT COUNT(o.order_number) 
    FROM dtb_order o 
    WHERE o.order_number = 結合した注文番号
    
[/code]

・QueryBuilderにて作成

[code]

    $qb = $em->getRepository('Eccube\Entity\Order')
        ->createQueryBuilder('o')
        ->select('COUNT(o.order_number)')
        ->where('o.order_number = :orderId')
        ->setParameter('orderId', '$orderId');
    $countOrderId = $qb
        ->getQuery()
        ->getSingleResult();
    
[/code]

この際、メモリ不足のエラーが起きてしまったため以下のSQLに変えることにしました。

・作成しなおしたSQL

[code]

    SELECT 1
    FROM dtb_order o 
    WHERE o.order_number = 結合した注文番号
    LIMIT 1
    
[/code]

この際の、QueryBuilderでの記述方法につきまして  
ご存知の方がいらっしゃいましたらご教示お願いいたします。  
ヒントでも構いません。

よろしくお願いいたします。

以下、追記  
・エラー内容

Apacheのエラーログは以下の通りです。  
メモリが足りてないって感じなのですかね？？  
[Thu Jun 30 13:51:01.710082 2016] [:error] [pid 9568:tid 1856] [client
::1:61415] PHP Fatal error: Allowed memory size of 268435456 bytes exhausted
(tried to allocate 552 bytes) in
C:\xampp\htdocs\eccube-3.0.10\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOStatement.php
on line 91, referer: <http://localhost/eccube-3.0.10/html/index_dev.php/cart>


CC BY-SA 3.0
2016-06-30T04:35:26.903
27210
2018-05-22T08:09:43.453
2016-06-30T04:54:13.933
16937
16937
question
php ec-cube
EC-CUBEでのSQLの記述について


メモリ不足のエラーです。  
EC-CUBE３はmemory_limit256MBでは無理が出てくるので、php.iniやini_set()で増やしておいた方が良いと思います。

また、重複チェックが目的であれば

[code]

    $Order = $em->getRepository('Eccube\Entity\Order')
    ->findOneBy(array('order_number' => $orderId));
    
[/code]

で、$Orderがnullかどうかチェックで良いと思います。


CC BY-SA 3.0
2017-02-09T02:30:24.520
32519
2017-02-09T02:30:24.520
20575
27210
answer