我在我的数据库中有一个表Test,其中包含以下字段:
id | name
1 | YW55IGNhcm5hbCBwbGVhcw==
2 | fghfghgcm5hbCBwbGVhcw==
使用base64对名称进行哈希处理。在我的模型中,我可以覆盖这种方法:
public function getName() {
return base64_decode($this->getName);
}
并在函数保存中:
$this->setName(base64_encode($this->getName));
这工作正常,但我在管理生成器中使用过滤器时遇到很大问题。如果我为过滤器名称键入了NAME,例如“stackoverflow”,那么这将使用“stackoverflow”而不是base64_encode('stackoverflow')进行查询。有可能覆盖这个吗?如果是,怎么样?
我使用Symfony 1.4和Doctrine。
答案 0 :(得分:0)
在该字段的doBuildQuery
子类中重载sfFormFilterDoctrine
,以便按编码值进行查询。
编辑:或者,您可以重载addTextQuery
。无论哪种方式,在评论中清楚地解释业务逻辑
答案 1 :(得分:-1)
尝试查看SHA1加密。请求看起来像SELECT * FROM Test WHERE name=SHA1(".$myNameFromAdmin.");
还有一个:你不需要public function getName()
- 这是base64_decode()的别名