【发布时间】:2013-02-11 18:24:21
【问题描述】:
/**
* PGSearchFunction ::= "PG_SEARCH" "(" StateFieldPathExpression "," StringPrimary ")"
*/
class PGSearch extends FunctionNode
{
public $searchColumn = null;
public $search = null;
public function parse(Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->searchColumn = $parser->StateFieldPathExpression();
$parser->match(Lexer::T_COMMA);
$this->search = $parser->StringPrimary();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
public function getSql(SqlWalker $sqlWalker)
{
return sprintf("%s @@ to_tsquery('english', %s)", $this->searchColumn->dispatch($sqlWalker), $this->search->dispatch($sqlWalker));
}
}
[语法错误] line 0, col -1: Error: Expected =, , >, >=, !=, got end of string。关于如何防止学说将其视为标准 SQL 表达式的任何建议?顺便说一句,使用学说 2.2。
【问题讨论】:
-
您在 DQL 中将什么传递给
PG_SEARCH函数? -
$em->createQuery("SELECT i FROM MyBundle:Invoice i WHERE PG_SEARCH(i.search, 'virus')");
-
你可以试试
$em->createQuery("SELECT i FROM MyBundle:Invoice i WHERE PG_SEARCH(i.search, 'virus') = true"); -
那行得通,希望有一个更清洁的解决方案,但那会奏效。谢谢你好先生。
-
是的,不幸的是,Doctrine 对此类功能的支持似乎不存在。
标签: php postgresql symfony doctrine-orm full-text-search