2

ZF2スケルトンアプリケーションのようにtableGatewayを使用して、ZF2アプリケーションで[MATCH(title、description)AGAINST('text')]を実行する必要があります。

\ Zend \ Db \ Sql \ Whereで試してみたとき、私は大きな期待を抱いていましたが、方法が見つかりませんでした。それを行う方法についてのアドバイスや例はありますか?

4

6 に答える 6

4

stackoverflowへの私の最初の貢献。

ZF2TableGatewayでは次のように実行できます。

$rowSet = $this->someTableGateway->select(function (Select $select) {
      $select->columns(array(new \Zend\Db\Sql\Expression("MATCH(column) AGAINST('Query') AS score")))
             ->where("MATCH(column) AGAINST('\"Query\"' in boolean mode)")
             ->order('score DESC');
    });

var_dump($rowSet->toArray());
于 2013-02-01T13:46:16.437 に答える
2

また、MATCH AGAINSTを使用する方法が見つからなかったため、代わりにLIKEを使用できると思います。

$rowset = $someTable->select(function (Select $select) {
     $select->where->like('CONCAT(title, description)', '%text%');
});
于 2012-12-07T06:11:14.487 に答える
1

tableGatewayでMATCHAGAINSTを実行する方法はないようです。唯一の解決策は、\ Zend \ Db \ Adapter \ Adapter-> query($ qry)を使用して「デフォルト」の方法で実行することです。

于 2012-12-07T09:50:44.970 に答える
1

これはどう?

$db->select()->from('your_table')
    ->where('MATCH (`title, description`) AGAINST (?)', $text)

また、ブールモードでも機能します。

$db->select()->from('your_table')
    ->where('MATCH (`title, description`) AGAINST (? IN BOOLEAN MODE)', $text)
于 2014-01-20T09:20:24.627 に答える
1

これは私のために働いた。

$select->where("MATCH(title, description) AGAINST ('{$text}' IN NATURAL LANGUAGE MODE)");
于 2021-11-22T22:59:32.343 に答える
0

Zend \ Db \ Sql \ Where(Predicate / PredicateSet)APIのexpression($ expression、$ parameters)を使用する必要があります。

https://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#expression-expression-parameter

例えば ​​:

  $select->where->expression(" MATCH(title, description) AGAINST( ? ))", $text);
于 2017-11-30T15:33:08.750 に答える