Запрос таблицы MySQL с помощью Idiorm / Paris - PullRequest
3 голосов
/ 06 января 2012

У меня есть модель на основе 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 ]

8 голосов
/ 11 мая 2012

Подробнее о кодировании парижской модели в формате JSON. Это вернет все _data в массиве в виде строки JSON:

echo json_encode(array_map(function ($post) {
    return $post->as_array();
}, $posts))
7 голосов
/ 06 января 2012

Оригинальный ответ

Вы можете сделать это следующим образом:

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());
}
4 голосов
/ 16 июня 2013

Если вы используете последнюю версию paris и idiorm, вы можете использовать find_array ()

$posts = Model::factory('Post')->find_array();

Спасибо Тиму У. за то, что вдохновили меня заняться этим.

GitHub: множественные результаты как проблема с массивом

Документация - как ассоциативный массив

...