【发布时间】:2013-12-01 10:51:32
【问题描述】:
我正在做一个 Symfony 1.4 项目,需要自定义一个后端过滤器“name”,以便同时搜索“name_full”列和“name”列。
我想在我的 FormFilterClass 中这样做:
public function addNameColumnQuery(Doctrine_Query $query, $field, $value) {
$rootAlias = $query->getRootAlias();
return $query->where(''.$rootAlias.'.name LIKE ?', "%$value%")
->orWhere(''.$rootAlias.'.name_full LIKE ?', "%$value%");
}
但这不起作用,因为它给了我错误的结果集。而且我找不到可以转储完整 dql 以进行调试的文件。
请指出我可以在哪里转储完整的 dql,甚至告诉我我的方法有什么问题。
谢谢!
编辑:这是 Michal 建议并由我调整的正确功能:
public function addNameColumnQuery(Doctrine_Query $query, $field, $value)
{
$rootAlias = $query->getRootAlias();
return $query->addWhere(
''.$rootAlias.'.name LIKE ? OR '.$rootAlias.'.name_full LIKE ?',
array($value, $value)
);
}
【问题讨论】:
-
我发现我必须在我的 FilterFormClass 中重载 doBuildQuery()。我到底要怎么做?我仍在寻找解决方案。
-
使用开发环境时可以从开发工具栏查看查询。
标签: symfony-1.4 doctrine-query