現在、friendsofcake検索プラグイン(バージョン1.2.3)を実装しています。組み合わせたこれらの二つのフィールドのための検索プラグインを検索していることFIRST_NAMEとLAST_NAME私のデータベーステーブルに格納するので検索プラグインの連結フィールドCakephp 3
$this->searchManager()
->add('id', 'Search.Value')
->add('q', 'Search.Like', [
'before' => true,
'after' => true,
'field' => [$this->aliasField('username'), $this->aliasField('name')]
])
->add('q', 'Search.Callback', [
'callback' => function ($query, $args, $manager) {
return $query->select(['name' => $query->func()->concat(
['first_name' => 'identifier', ' ' , 'last_name' => 'identifier']
)]);
}
]);
分離欲しい(名前:すべては、それは私はこのような二つのフィールドをCONCATしたい例外であるべきな働き)。上記のコードは、同様のclausuleを無視し、コールバック内でクエリを出力すると、同様の操作を無視するようです。誰かがこの検索プラグイン内で2つのフィールドをどのように連結できるか知っていますか?
データが実際の結果に補間されているので、このソリューションは、SQLインジェクションの権利のために安全ではないでしょうか? – markvdlaan93
@ markvdlaan93あなたは、データが 'key => value set 'の値として別々に設定されているので、右辺の値が条件のように安全であることを意味します。正確には、値は準備されたクエリの中で束縛されたパラメータとして設定されます。 – ndm
@ markvdlaan93プレースホルダを表示する '$ query-> sql()'をデバッグすることでチェックできます。もちろん、何かを注入してテストすることもできます:) – ndm