簡體   English   中英

如何在 Zend Framework 2 中與 tableGateway 進行匹配?

[英]How to do a MATCH AGAINST with tableGateway in Zend Framework 2?

我需要在 ZF2 應用程序中使用 tableGateway 執行 [MATCH (title, description) AGAINST ('text')],就像在 ZF2 骨架應用程序中一樣。

嘗試使用 \\Zend\\Db\\Sql\\Where 時,我寄予厚望,但找不到任何方法。 關於如何做到這一點的任何建議或示例?

我對stackoverflow的第一個貢獻。

你可以在ZF2 TableGateway中這樣做:

$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());

我也沒有找到任何使用MATCH AGAINST的方法,所以我想你可以使用LIKE代替:

$rowset = $someTable->select(function (Select $select) {
     $select->where->like('CONCAT(title, description)', '%text%');
});

似乎沒有辦法用tableGateway做MATCH AGAINST。 只有通過使用\\ Zend \\ Db \\ Adapter \\ Adapter - > query($ qry)使用“默認”方式進行解決方案

這個怎么樣?

$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)

您應該使用Zend \\ Db \\ Sql \\ Where(Predicate / PredicateSet)API中的表達式($ 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);

這對我有用。

$select->where("MATCH(title, description) AGAINST ('{$text}' IN NATURAL LANGUAGE MODE)");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM