Запрос таблицы MySQL с помощью Idiorm/Paris
У меня есть 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...
Теперь вопрос: как мне получить доступ к данным? Потому что я не могу получить к этому доступ. Я делаю что-то неправильно?
3 ответа
Оригинальный ответ
Вы можете сделать это следующим образом:
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());
}
Подробнее о кодировании парижской модели в формате JSON. Это вернет все _data
в массиве в виде строки JSON:
echo json_encode(array_map(function ($post) {
return $post->as_array();
}, $posts))
Если вы используете последнюю версию paris и idiorm, вы можете использовать find_array()
$posts = Model::factory('Post')->find_array();
Спасибо Тиму У. за то, что он вдохновил меня на это.