2012-03-20 3 views
1

Я пытаюсь запросить БД с помощью следующего запроса в модели:Codeigniter Сообщение: Не определено свойство: StdClass

function showSpecific(){ 

    $all = $this->session->all_userdata(); 
    $name = $all['u_name']; 

    $id = $this->db 
    ->select('u_id') 
    ->from('users') 
    ->where('u_name', $name) 
    ->get() 
    ->row(); 

    $id = $id->u_id; 

    $data = $this->db->query("SELECT messages.m_id, messages.post_id, messages.m_betreff, messages.an_user, messages.von_user, messages.m_time, users.u_id, users.u_name, posts.p_titel, users.u_id, messages.m_content 
       FROM messages 
       INNER JOIN users 
       ON messages.von_user=users.u_id 
       INNER JOIN posts 
       ON messages.post_id=posts.post_id 
       WHERE messages.an_user='$id' 
       ORDER BY messages.m_time DESC"); 




    return $data; 
} 

Но когда я пытаюсь вывести результат в представлении:

<?php foreach ($query->result() as $row) 
       { 
        echo '<tr><td>'; 
        echo anchor('users/showUser/'.$row->u_id, $row->u_name); 
        echo '</td><td>'; 
        echo $row->m_betreff; 
        echo '</td><td>'; 
        echo $row->m_content; 
        echo '</td><td>'; 
        echo anchor('posts/showSpecific/'.$row->post_id, $row->p_titel); 
        echo '</td><td>'; 
        echo $row->m_time; 
        echo '</td></tr>'; 
       } 
       ?> 

Только m_content получает эту ошибку: почему она единственная? И как я могу это решить?

A PHP Error was encountered 
Severity: Notice 

Message: Undefined property: stdClass::$m_content 

Filename: views/specific_message.php 

Line Number: 48 

Вот мой контроллер:

function showSpecific(){ 

    $this->load->model('messages_model'); 
    $data['query'] = $this->messages_model->getMessages(); 

    $data['main_content'] = 'specific_message'; 
    $this->load->view('includes/login_template', $data); 
} 

Спасибо большое!

+1

попробовать 'var_dump ($ query-> результат (а))' и посмотреть, что проблема с m_content. Другое предложение - не использовать mysql-запросы внутри файлов просмотра, использовать их только для шаблонов – safarov

+0

вы печатаете другие значения? –

+0

Да все остальные значения печатаются. Запрос внутри модели, извините, я забыл также скопировать эту строку кода. Спасибо за предложение, тогда я попробую ответить. Благодаря! – Linus

ответ

6

Я думаю

$data['query'] = $this->db->query("..."); 

должен быть

$query=$this->db->query("..."); 

так что вы можете

foreach ($query->result() as $row) {...} 

ссылка:codeigniter

После вопроса Обновление: У вас есть переменная запроса $ в вашем представлении из-за $ data ['query'] ($ data будет извлечено), $ query - это ваш объект сейчас (внутри вашего представления), поэтому вы можете зацикливать запрос $ ,

Неправильное имя модели GetMessages() было названо, оно должно быть showSpecific()

+0

Я изменил его и все соответствующие места, но теперь я получаю следующую ошибку: Неустранимая ошибка: нельзя использовать объект типа CI_DB_mysql_result как массив в /htdocs/findjou/application/controllers/messages.php в строке 19 – Linus

+0

Используете ли вы запись массива в любом месте ? i.e $ row ['u_id']? потому что он возвращает объект, поэтому используйте его как $ row-> u_id; –

+0

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