Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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 通过toArray()序列化时隐藏列_Php_Orm_Doctrine_Crud_Doctrine 1.2 - Fatal编程技术网

Php 通过toArray()序列化时隐藏列

Php 通过toArray()序列化时隐藏列,php,orm,doctrine,crud,doctrine-1.2,Php,Orm,Doctrine,Crud,Doctrine 1.2,我有一个简单的问题,我经常返回CRUD类型的Ajax请求以及Doctrine 1.2模型的数组序列化版本。我希望能够在execute()结果之后简单地返回toArray()方法,但是,这将显示关于我不希望公开的模型的数据。一个简单的例子是在我的用户模型上显示密码和salt。虽然我意识到这些已经是散列值,但我不希望将其作为JSON响应返回 我已经翻阅了Doctrine 1.2手册,但没有找到任何提供我正在寻找的功能类型的内容。我意识到我可以迭代结果来手动取消设置()我想要隐藏的列,但我希望有一个我

我有一个简单的问题,我经常返回CRUD类型的Ajax请求以及Doctrine 1.2模型的数组序列化版本。我希望能够在execute()结果之后简单地返回toArray()方法,但是,这将显示关于我不希望公开的模型的数据。一个简单的例子是在我的用户模型上显示密码和salt。虽然我意识到这些已经是散列值,但我不希望将其作为JSON响应返回


我已经翻阅了Doctrine 1.2手册,但没有找到任何提供我正在寻找的功能类型的内容。我意识到我可以迭代结果来手动取消设置()我想要隐藏的列,但我希望有一个我忽略的更原生的解决方案

为什么不构建自己的
toArray()

如果要这样做,必须扩展从所有基类继承的sfDoctrineRecord类

您必须将
configuredoctor()
放入
config/ProjectConfiguration.class.php

然后你会有这样一节课:

class myDoctrineRecord extends sfDoctrineRecord
{
}
因此,您可以在此处轻松添加自定义
toArray()

class myDoctrineRecord extends sfDoctrineRecord
{
  public function toArray($deep = true, $prefixKey = false, array $excludeFields = array())
  {
    // do every thing like the original toArray
    // but when a column match one entry in $excludeFields, don't add it
  }
}

因此,当对第三个参数的字段数组使用
toArray()
方法时,它们将被排除在结果之外。

为什么不构建自己的
toArray()

如果要这样做,必须扩展从所有基类继承的sfDoctrineRecord类

您必须将
configuredoctor()
放入
config/ProjectConfiguration.class.php

然后你会有这样一节课:

class myDoctrineRecord extends sfDoctrineRecord
{
}
因此,您可以在此处轻松添加自定义
toArray()

class myDoctrineRecord extends sfDoctrineRecord
{
  public function toArray($deep = true, $prefixKey = false, array $excludeFields = array())
  {
    // do every thing like the original toArray
    // but when a column match one entry in $excludeFields, don't add it
  }
}
因此,当将
toArray()
方法与第三个参数的字段数组一起使用时,它们将从结果中排除