开发者

Symfony/Doctrine Searchable Behavior : How to override search function?

开发者 https://www.devze.com 2023-03-11 14:28 出处:网络
Here is the thing, I have implemented the searchable behavior on my symfony project and it\'s working fine. The problem is when I try to perform a search with two words or more. The query generated by

Here is the thing, I have implemented the searchable behavior on my symfony project and it's working fine. The problem is when I try to perform a search with two words or more. The query generated by the search function is like:

SELECT COUNT(keyword) AS relevance, id FROM table_index 
WHERE id IN (SELECT id FROM table_index WHERE keyword = 'foo') 
AND id IN (SELECT id FROM table_index WHERE keyword = 'bar') 
GROUP BY id 
ORDER BY relevance DESC

Because the search uses a AND clause, these two words have to be part of a same item to be relevant. Though to modify the behavior of the search I would like to override the search function. But because the table_index generated by doctrine is not declared on my schema.yml, I'm not able to perform query on it.

Is there an other way to do it ?? Thanks开发者_运维知识库


Ok, my bad, I thought that accessing the table_index was impossible because not declared on my schema.yml, but actually it is, thanks to the searchable line.

In my search function,Instead of

$q = Doctrine_Query::create()
  ->select('COUNT(e.keyword) AS relevance, e.id')
   ->from('Table_Index t');

I just had to remove the _ in the name of the index table

$q = Doctrine_Query::create()
  ->select('COUNT(e.keyword) AS relevance, e.id')
   ->from('TableIndex t');
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号