我有一个基于Paris
的模型及其相对的"posts"表:
class Post extends Model {
public static $_table = 'posts';
public static $_id_column = 'id';
}
当我做一个简单的查询来获取所有帖子时:
$posts = Model::factory('Post')->find_many();
var_dump($posts);
这是我得到的回应:
array(13) {
[0]=>
object(Post)#34 (1) {
["orm"]=>
object(ORM)#21 (19) {
["_table_name":protected]=>
string(5) "posts"
["_table_alias":protected]=>
NULL
["_values":protected]=>
array(0) {
}
["_result_columns":protected]=>
array(1) {
[0]=>
string(1) "*"
}
["_using_default_result_columns":protected]=>
bool(true)
["_join_sources":protected]=>
array(0) {
}
["_distinct":protected]=>
bool(false)
["_is_raw_query":protected]=>
bool(false)
["_raw_query":protected]=>
string(0) ""
["_raw_parameters":protected]=>
array(0) {
}
["_where_conditions":protected]=>
array(0) {
}
["_limit":protected]=>
NULL
["_offset":protected]=>
NULL
["_order_by":protected]=>
array(0) {
}
["_group_by":protected]=>
array(0) {
}
["_data":protected]=>
array(4) {
["id"]=>
string(1) "1"
["title"]=>
string(10) "Primo post"
["content"]=>
string(11) "prova prova"
["published"]=>
string(1) "0"
}
["_dirty_fields":protected]=>
array(0) {
}
["_is_new":protected]=>
bool(false)
["_instance_id_column":protected]=>
string(2) "id"
}
}
etc...
现在的问题是:如何访问数据?因为我无法访问。我做错什么了吗?
关于将Paris模型编码为JSON的更多信息。这将以JSON字符串的形式返回数组中的所有_data
:
echo json_encode(array_map(function ($post) {
return $post->as_array();
}, $posts))
原始答案
你可以通过以下方式做到这一点:
foreach($posts as $post) {
echo $post->title;
}
正如你所看到的,我首先循环浏览记录,然后打印每个记录的标题。您的结果的受保护数据属性中的所有内容都可以通过以下方式访问:
array(4) {
["id"]=>
string(1) "1"
["title"]=>
string(10) "Primo post"
["content"]=>
string(11) "prova prova"
["published"]=>
string(1) "0"
}
因此,您可以通过调用来获取内容
echo $post->content;
顺便说一句,《巴黎》和《白痴》的作者杰米曾经和我一起工作过,所以如果你还有其他问题,请告诉我。
对评论中问题的回答
您可以通过以下方式将其编码为JSON:
foreach($posts as $post) {
echo json_encode($post->as_array());
}
如果您使用的是最新版本的paris和idiorm,则可以使用find_array()
$posts = Model::factory('Post')->find_array();
感谢蒂姆·W激励我追求这一目标。
GitHub:数组问题导致多个结果
文档-作为关联数组