Doctrine で MATCH AGAINST を WHERE 構文で使用すると、渡されたパラメーターが置き換えられないことがわかりました。たとえば、次のコードを実行すると $
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式を実行する前にパラメータを置き換えない理由を知っている人はいますか?