Ger*_*sek 6 php zend-framework phpactiverecord
我想有一个简单的方法,可以将PHP Activerecord结果作为简单/关联数组,而不是ActiveRecord对象数组.
在Ruby中,我相信这可能是通过.map()方法完成的.(我不是红宝石家伙...)
我想要的是一个简单的方法调用,比如toArray()在Zend_DB_Table中,不是foreach,或类似的东西,但我似乎无法在他们的文档中找到它.
在PHP ActiveRecord中获取结果非常简单:
$settings = SystemSettings::all();
Run Code Online (Sandbox Code Playgroud)
但它给出了这样的东西:
[0] => SystemSettings Object
(
[errors] =>
[attributes:ActiveRecord\Model:private] => Array
(
[param] => author
[value] => Hawle
)
[__dirty:ActiveRecord\Model:private] => Array
(
)
[__readonly:ActiveRecord\Model:private] =>
[__relationships:ActiveRecord\Model:private] => Array
(
)
[__new_record:ActiveRecord\Model:private] =>
)
[1] => SystemSettings Object
(
[errors] =>
[attributes:ActiveRecord\Model:private] => Array
(
[param] => base_url
[value] => example.com
)
[__dirty:ActiveRecord\Model:private] => Array
(
)
[__readonly:ActiveRecord\Model:private] =>
[__relationships:ActiveRecord\Model:private] => Array
(
)
[__new_record:ActiveRecord\Model:private] =>
)
Run Code Online (Sandbox Code Playgroud)
虽然在很多情况下这真的很棒,但在这里,我只想拥有一个简单的数组,如下所示:
Array
(
[author] => Hawle
[base_url] => example.com
)
Run Code Online (Sandbox Code Playgroud)
小智 7
我有一个类似的问题,希望这可以帮助其他人偶然发现它.显然,这是phpactiverecord.org特有的.
在/lib/Model.php中我添加了以下函数:
public function to_array(array $options=array())
{
return $this->serialize('array', $options);
}
Run Code Online (Sandbox Code Playgroud)
在/lib/Serialization.php中,我添加了以下类
class arraySerializer extends Serialization
{
public static $include_root = false;
public function to_s()
{
return self::$include_root ? array(strtolower(get_class($this->model)) => $this->to_a()) : $this->to_a();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以调用 - > to_array()并返回一个数组.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
7970 次 |
| 最近记录: |