2016-10-10 2 views
0

私はSymfony 3 CRMを開発しています。姓の最初の文字でフィルタリングできる顧客のリストを作成する必要があります。問題は、姓を見つけるために列データを最初に分割する必要があるということです。これは、データベースが特定の形式のデータを必要とするSageと同期するためです。変更できません。Doctrine 2でSUBSTRING_INDEXが認識されない

私はSUBSTRING_INDEX機能を発見し、私のMySQLソフトウェアでそれを試してみたし、それが完璧に動作します - ので、私はそうのようなDQLクエリにそれを組み込むことを試みた:

$letterはからの要求を経由して渡され
$query = $em->createQuery("SELECT u FROM AppBundle:Customer c WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(c.contact_name, ' ', 3), ' ', -1) LIKE :letter"); 
$query->setParameter('letter','%'.$letter.'%'); 

CRM。ただし、実行しようとしたとき、私はsymfonyのから次のエラーを取得する:

[Syntax Error] line 0, col 41: Error: Expected known function, got 'SUBSTRING_INDEX'

私の推測ではDoctrineはSUBSTRING_INDEX機能を認識しないということでしょうか? Doctrineがこの機能を認識できるようにするための方法がありますか?

+0

あなたは[このバンドル](https://github.com/beberlei/DoctrineExtensions)または自分で道具などを使用することができます[this](http://stackoverflow.com/a/25508062/2270041)に記載されている回答 – Matteo

答えて

1

DoctrineはSUBSTRING_INDEXを関数として認識しません。

は、あなたはそれを認識したりLKEもののためにあなたのクエリを変更するにはDoctrine Extensionをインポートすることができ、このsql LOWER(SUBSTRING(c.contact_name, LOCATE(' ', c.contact_name)-1))

関連する問題