gpt4 book ai didi

php - idiorm/paris has_many as_array 结果集

转载 作者:行者123 更新时间:2023-12-04 05:58:28 24 4
gpt4 key购买 nike

我无法使用 php idiorm/paris 获取 has_many 查询的结果。遵循 paris site 中的示例帖子的 has_many 结果作为对象返回。

太好了,我可以运行对象并访问各个方法,但我想要做的是将结果集作为关联数组传递给我的模板引擎进行显示。

例子:

   class Post extends Model {
}

class User extends Model {
public function posts() {
return $this->has_many('Post'); // Note we use the model name literally - not a pluralised version
}
}

api 是这样工作的:
   // Select a particular user from the database
$user = Model::factory('User')->find_one($user_id);

// Find the posts associated with the user
$posts = $user->posts()->find_many();

我能够访问posts对象并像这样打印结果集:
   // echo each post id
foreach ($posts as $post) {
echo $post->id;
}

不过,我真正想做的是使用 as_array() 将整个结果集作为关联数组,以 as_array 对单个行工作的方式受某些字段的限制,例如
   $post_list = $posts()->as_array(id,title,post,date);

这个,或者像 $user->posts()->find_many()->as_array() 这样的调用不起作用。

使用 paris 访问此类结果集的正确方法是什么?

最佳答案

将此方法添加到 idiorm.php 为我提供了所需的功能。

public function find_array() {
if (func_num_args() === 0) {
return $this->_run();
}
$args = func_get_args();
$array = array();
foreach ($this->_run() as $r) {
$array[] = array_intersect_key($r, array_flip($args));
}
return $array;
}

现在我可以调用 $post_list = $posts()->find_array();或 $posts()->find_array('id','title');等等。

关于php - idiorm/paris has_many as_array 结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9229422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com