EC-CUBE Lab
produced by Cajiya
EC-CUBEに関するカスタマイズ方法やトラブルへの対処方法を発信

管理画面の商品一覧検索で、英字大文字小文字を区別しないようにするカスタマイズ方法

公開日: 2025年10月12日 | 更新日: 2025年11月04日
商品 検索・絞り込み強化 EC-CUBE 4系全般

要望や症状

EC-CUBE 4系 の管理画面において、商品一覧の検索機能で英字の大文字小文字が区別される仕様となっています。

フロント画面の商品検索では「Chicken」と「chicken」のどちらで検索しても同じ結果が返されるのに対し、管理画面の商品一覧検索では大文字小文字が区別されて異なる結果が返されます。このため、管理者が商品管理を行う際に、フロント画面とは異なる検索動作となり、統一された操作感を得ることができません。

管理画面でもフロント画面と同様の大文字小文字を区別しない検索動作を実現したい場合は、カスタマイズが必要となります。

理由や原因

フロント画面と管理画面で意図的に異なる検索クエリが使用されていることが要因です。

フロント画面のProductRepositoryでは、getQueryBuilderBySearchData()メソッド内で商品名をNORMALIZE()関数により正規化処理を行っているため、大文字小文字を区別しない検索が実現されています。

一方、管理画面用の商品検索メソッドでは意図的に正規化処理が実装されておらず、データベースの照合順序に基づいた厳密な検索仕様となっています。これは管理画面では正確な商品管理を重視した設計思想によるものですが、運用方針によってはフロント画面と統一した検索動作が求められる場合があります。

解決策

管理画面の商品検索でも同様の正規化処理を実装するため、ProductRepositoryを継承してカスタマイズを行います。

1. カスタムProductRepositoryの作成

管理画面用の検索メソッドをオーバーライドして、正規化処理を追加します。

// app/Customize/Repository/ProductRepository.php
<?php

namespace Customize\Repository;

use Eccube\Repository\ProductRepository as BaseProductRepository;
use Doctrine\ORM\QueryBuilder;

class ProductRepository extends BaseProductRepository
{
    public function getQueryBuilderBySearchDataForAdmin($searchData)
    {
        $qb = parent::getQueryBuilderBySearchDataForAdmin($searchData);
        
        // 商品名検索時に正規化処理を追加
        if (!empty($searchData['id'])) {
            $qb->andWhere('NORMALIZE(p.name) LIKE NORMALIZE(:name)')
               ->setParameter('name', '%' . $searchData['id'] . '%');
        }
        
        return $qb;
    }
}

2. サービス定義の追加

カスタムRepositoryをDIコンテナに登録します。

# app/Customize/Resource/config/services.yaml
services:
    Customize\Repository\ProductRepository:
        parent: Eccube\Repository\ProductRepository
        tags:
            - { name: doctrine.repository_service }

3. キャッシュクリア

設定を反映させるためにキャッシュをクリアします。

bin/console cache:clear

これで管理画面の商品一覧検索でも、フロント画面と同様に英字の大文字小文字を区別しない検索が可能になります。

注意事項

データベースの照合順序やMySQLのバージョンによって動作が異なる場合があります。実装前に必ずステージング環境での動作確認を行ってください。また、大量の商品データがある場合、検索パフォーマンスに影響する可能性があるため、必要に応じてインデックスの追加を検討してください。

免責事項

本記事に掲載しているコードや手順は、執筆時点での情報および特定の環境下での動作確認に基づいています。 EC-CUBEのバージョン、サーバー環境、導入済みプラグインとの競合などにより、予期せぬ不具合が発生する可能性があります。

本記事の内容を実行した結果、生じた損害(データの消失、サイトの停止、機会損失など)について、当サイトおよび管理者は一切の責任を負いかねます。 実装にあたっては、必ずバックアップを取得し、検証環境(テスト環境)での動作確認を行った上で、ご自身の責任において実施してください。

この記事は参考になりましたか?

著者プロフィール: 株式会社カジヤ

当社はWeb業界の専門家として、培った経験や技術、自社事業を通して得た知見を土台に、 お客様の事業の成長を後押しすることを提供価値として活動する、Web事業の成長支援会社です。 EC-CUBE公式のパートナー制度「EC-CUBE インテグレートパートナー」に登録してしており、上位11%にあたる「ゴールドランク」に認定された実績があり、新しい通販サイトの構築から、カスタマイズ、リニューアルまで幅広く対応します。

商品 の関連記事

商品 データ不整合 EC-CUBE 4系全般
EC-CUBEで取り扱い終了商品の削除ができない理由と対応方法

EC-CUBEでは、取り扱いを終了した商品を削除したい場合に、削除ができない状態になることがあります...

👍 1 / 👎 0 2025年10月12日
商品 表示/テンプレート調整 EC-CUBE 4系全般
会員のみに商品価格を表示するカスタマイズ方法

EC-CUBEで会員専用サイトや卸売りサイトを構築する際、商品価格をログイン前は非表示にし、会員ログ...

👍 0 / 👎 0 2025年10月12日
商品 EC-CUBE 4.2系 / Symfony 5.4 Twig改修
商品画像の登録枚数の上限数を変更する方法

EC-CUBE 4.2系の管理画面で商品登録を行う際、商品画像が10枚までしか登録できない制限があり...

👍 0 / 👎 0 2025年10月12日
商品 EC-CUBE 4系全般
商品登録フォームのinputをtextareaに変更するカスタマイズ方法

商品登録時の入力欄がinputタグで表示されており、より多くのテキストを入力しやすいようにtexta...

👍 0 / 👎 0 2025年10月12日
商品 EC-CUBE 4.2系 / Symfony 5.4 サービス/コントローラ拡張
商品登録画面のフリーエリアでTwig構文を使用可能にするカスタマイズ方法

商品登録画面のフリーエリアでTwig構文を使用した画像パスを入力すると、保存時に構文がHTMLエスケ...

👍 0 / 👎 0 2025年09月24日

検索・絞り込み強化 の関連記事

受注管理(管理画面) 検索・絞り込み強化 EC-CUBE 4系全般
管理画面の受注編集画面での商品追加時に、廃止商品を表示されなくするカスタマイズ方法

管理画面の受注編集画面で、商品情報セクションの「商品を追加」を行ったときに、商品の検索結果には廃止ス...

👍 0 / 👎 0 2025年10月12日
商品カテゴリ・一覧・検索 検索・絞り込み強化 EC-CUBE 4系全般
商品検索のカテゴリ制限を解除するカスタマイズ方法

商品カテゴリページから検索を実行すると、そのカテゴリ内の商品のみが検索対象となり、サイト全体の商品か...

👍 0 / 👎 0 2025年09月24日

EC-CUBE 4系全般 の関連記事

商品 データ不整合 EC-CUBE 4系全般
EC-CUBEで取り扱い終了商品の削除ができない理由と対応方法

EC-CUBEでは、取り扱いを終了した商品を削除したい場合に、削除ができない状態になることがあります...

👍 1 / 👎 0 2025年10月12日
インストール・セットアップ EC-CUBE 4系全般 設定変更
EC-CUBEサイトのドメイン変更時の設定変更方法

EC-CUBEで構築したサイトを新しいドメインで公開する際に、どのような設定変更が必要かわからない場...

👍 0 / 👎 0 2025年10月12日
メール通知 通知/コミュニケーション EC-CUBE 4系全般
メール件名のショップ名を英語表記に変更する方法

EC-CUBE 4系で、メール件名の先頭に自動挿入される店舗名を英語表記に変更したい場合があります。...

👍 0 / 👎 0 2025年10月12日
フロント共通 機能不動作 EC-CUBE 4系全般
CloudFrontを利用時にリンクのドメインがEC2のパブリックDNSになってしまう問題の解決方法

EC-CUBE 4.2をAWS ECS on EC2上で構築し、CloudFrontをCDNとして利...

👍 1 / 👎 0 2025年10月12日
サイト全体 500エラー EC-CUBE 4系全般
EC-CUBEでメモリ不足エラーが発生した場合の対処方法

EC-CUBEの運用中に以下のようなメモリ不足エラーが発生することがあります。 ### エラー...

👍 1 / 👎 0 2025年10月12日