DoctrineでMATCH AGAINSTを使用すると、渡されたパラメータがWHERE構文で置き換えられないことがわかりました。たとえば、私は、任意の結果を見つけることができません。次のコード $DoctrineのMATCH AGAINST
q = Doctrine_Query::create()
->select('*')
->from('TourismUnit tu')
->where('FALSE');
if ($keywords) {
$keywords_array = $this->parse_keywords($keywords);
for ($i = 0; $i < sizeof($keywords_array); $i++)
$q->orWhere("MATCH (name, description) AGAINST ('?*' IN BOOLEAN MODE)", $keywords_array[$i]);
}
を実行する場合。 そして、それらが文字列連結を使用する場合、動作するようです。
$q->orWhere("MATCH (name, description) AGAINST ('".$keywords_array[$i]."*' IN BOOLEAN MODE)");
私はDoctrine 1.2.2を使用します。
SQL式を実行する前にパラメータを置き換えないのは誰でも知っていますか?
一重引用符を使用すると問題が発生しているようです - この 'concat( "'、?、" * '")'は役に立ちますか? – ajreal
はい、動作します。ありがとう。 – Emanuel