PHP, возвращающий объект, отображающий значения - PullRequest
1 голос
/ 04 мая 2011

Я сейчас работаю с codeigniter в проекте PHP, и одна из библиотек, которую я использую, возвращает объект результатов базы данных, который выглядит следующим образом:

    stdClass Object
(
    [user_id] => 2
    [firstname] => John
    [surname] => Doe
    [email] => jonh.doe@emailaddress.info
    [password] => 9d210a03bed920971fefab01b8f84a27
    [postcode] => W1 5ST
    [date_registered] => 2021-04-11 10:56:47
    [last_logged_in] => 2011-05-04 11:56:03
    [user_type_id] => 2
)

Затем я пытаюсь отобразить значения, используя следующий код, я отправляю пользователя в мое представление, выполнив следующее,

$data['users'] = $this->users_model->get_by($this->session->userdata('user_id');
$this->load->view('view', $data);

Тогда, на мой взгляд, я делаю следующее,

echo $users->firstname;

Однако в верхней части моей страницы появляется следующая ошибка:

Обнаружена ошибка PHP

Серьезность: 4096

Сообщение: объект класса stdClass невозможно преобразовать в строку

Имя файла: library / Parser.php

Номер строки: 63

Как я могу решить это? Без изменения способа идеального возврата результатов базы данных.

Ответы [ 4 ]

1 голос
/ 04 мая 2011

Вы на правильном пути.Несколько вещей.

Вы пропускаете закрытие) в этой строке.

$data['users'] = $this->users_model->get_by($this->session->userdata('user_id'));

Кроме того, трудно понять, что возвращается моделью вашего пользователя.Можете ли вы предоставить код для $ this-> users_model-> get_by ()?Вот где ваша проблема.

Убедитесь, что у вас есть запрос БД, возвращающий объект, как вы ожидаете.Возможно, вам понадобится добавить -> row ().

1 голос
/ 04 мая 2011

Вы не можете напрямую отобразить объект.создайте метод __ toString () или сериализуйте объект перед отображением.

0 голосов
/ 04 мая 2011

Для Codeigniter вам нужно вызвать $ users-> result (), $ users-> result_array (), $ users-> row () или $ users-> row_array () для доступа к данным объекта результата БД

http://codeigniter.com/user_guide/database/results.html

Предполагается, что возвращается одна строка:

$data['users'] = $this->users_model->get_by($this->session->userdata('user_id');
$data['users'] = $data['users']->row();
$this->load->view('view', $data);
0 голосов
/ 04 мая 2011

возможно, это потому, что вы отправляете переменную с именем "users" на ваше представление ... но, по вашему мнению, вы вызываете переменную $ user, а не $ users

, если нет ... В документе о видах говорится:

Примечание. Если вы используете объект, переменные класса будут превращены в элементы массива.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...