EC-CUBE / ec-cube

EC-CUBE is the most popular e-commerce solution in Japan
https://www.ec-cube.net
Other
745 stars 650 forks source link

WhereCustomizerがPostgreSQLでエラー #6113

Open tao-s opened 7 months ago

tao-s commented 7 months ago

概要(Overview)

2285

追加した携帯電話番号カラムを検索に含めようとすると、PostgreSQLだと下記エラーが出て実行できない。どうもDoctrineのバグっぽい

An exception occurred while executing a query: SQLSTATE[25P02]: In failed sql transaction: 7 ERROR: current transaction is aborted, commands ignored until end of transaction block
SQLSTATE[22003]: Numeric value out of range: 7 ERROR: value "09018829619" is out of range for type integer CONTEXT: unnamed portal parameter $1 = '...'

サンプルコード

OrderEntityにはmobile_phoneをstringで追加済み

    /**
     * @ORM\Column(name="mobile_phone", type="string", nullable=true)
     */
    public $mobile_phone;
<?php
namespace Customize\Repository;

use Eccube\Doctrine\Query\WhereClause;
use Eccube\Doctrine\Query\WhereCustomizer;
use Eccube\Repository\QueryKey;

class AdminOrderListCustomizer extends WhereCustomizer
{
    /**
     * キーワード検索に携帯番号を追加。
     *
     * @param array $params
     * @param $queryKey
     * @return WhereClause[]
     */
    protected function createStatements($params, $queryKey)
    {
        return [WhereClause::like('o.mobile_phone', ':multi', ['multi' => $params['multi']])];
    }

    /**
     * OrderRepository::getQueryBuilderBySearchDataForAdmin に適用する.
     *
     * @return string
     * @see \Eccube\Repository\OrderRepository::getQueryBuilderBySearchDataForAdmin()
     * @see QueryKey
     */
    public function getQueryKey()
    {
        return QueryKey::ORDER_SEARCH_ADMIN;
    }
}

再現手順(Procedure)

  1. traitを使ってOrderEntityに携帯番号カラムを追加
  2. 上記のカスタマイザーを追加
  3. 管理画面の受注検索でキーワードに携帯番号を入れて検索

環境(Environment)

EC-CUBE: 4.2.1 PostgreSQL 14.11 PHP 8.1.2 doctrine/dbal 3.7.2

dotani1111 commented 7 months ago

@tao-s issueありがとうございます。 こちらでも調査を進めたいと思います。 Doctrinのバグとの事ですが、参考リンクなどありますでしょうか?

tao-s commented 6 months ago

@dotani1111 すいません、該当のページがどこだかわからなくなってしまいました... なんかpostgresqlの時だけ発生するみたいな記述でした

ji-eunsoo commented 6 months ago

@tao-s ありがとうございます。こちらでも再現確認してみます。