Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 过滤器中的覆盖方法_Php_Symfony1_Doctrine_Symfony 1.4 - Fatal编程技术网

Php 过滤器中的覆盖方法

Php 过滤器中的覆盖方法,php,symfony1,doctrine,symfony-1.4,Php,Symfony1,Doctrine,Symfony 1.4,我的数据库中有一个带有以下字段的表测试: id | name 1 | YW55IGNhcm5hbCBwbGVhcw== 2 | fghfghgcm5hbCBwbGVhcw== 使用base64对名称进行散列。在我的模型中,我可以覆盖此方法: public function getName() { return base64_decode($this->getName); } 在功能保存中: $this->setName(base64_encode($th

我的数据库中有一个带有以下字段的表测试:

 id | name
 1  | YW55IGNhcm5hbCBwbGVhcw==
 2  | fghfghgcm5hbCBwbGVhcw==
使用base64对名称进行散列。在我的模型中,我可以覆盖此方法:

public function getName() {
        return base64_decode($this->getName);
}
在功能保存中:

$this->setName(base64_encode($this->getName));
这是工作正常,但我有很大的问题,过滤器在管理生成器。如果我键入过滤器名称exist name,例如“stackoverflow”,那么这将使用“stackoverflow”而不是base64_encode('stackoverflow')进行查询。有可能覆盖这个吗?如果是,如何进行


我使用Symfony 1.4和Doctrine。

尝试查看SHA1加密。请求看起来像
SELECT*fromtest,其中name=SHA1(“.$myNameFromAdmin”)


还有一点:您不需要
公共函数getName()
——这是该字段的
sfFormFilterDoctrine
子类中base64_decode()的别名,这样它就可以根据编码值进行查询


编辑:或者,您可以重载
addTextQuery
。无论哪种方式,请在注释中清楚地解释业务逻辑

在base64中保存名称有什么意义?这是一个示例。我在过滤器中有overwrite方法您必须首先有一个setName()方法来对值进行编码:“选择*FROM
test
WHERE name='”$this->setName($name)。“”;但正如KingCrunch syas所说,“在base64中保存名称有什么意义?”但我可以在哪里编辑这些查询?SHA1不是加密。。。这是一个散列算法(也不是一个好算法),因此是不可逆的。OP的帖子清楚地表明(通过他的getName()方法的存在),他想要一种可逆编码,尽管他为什么要这样编码还不清楚,但我错了。两次:(谢谢。为什么这个标签是symfony和doctorine的?它与这两者都无关。因为我使用symfony和DOCTORIN。我想在过滤器symfony中使用NetBeans、Firefox和Windows7。我应该用它标记我的所有帖子吗?