2013-04-20 3 views
0

У меня есть эта проблема, когда моя модель возвращает объект, но когда в контроллере он не может найти это поле, я всегда получаю эту ошибку «Попытка получить свойство не объекта», но когда я попытался var_dump(), результат возврата из моей модели есть значения. Я не могу понять, почему я не могу получить к нему доступ. Подключено ли оно к активным записям ?.Генерация результата на Codeigniter

Следующая модель.

public function retrieve($user_id = FALSE) 
{ 
    if($user_id === FALSE) 
    { 
     $query = $this->db->get('login'); 
     return $query->row(); 
    } 
    else 
    { 
     $query = $this->db->get_where('login',array('account_id'=>$user_id)); 
     return $query->result(); 
    } 
} 

Вот фрагмент кода моего контроллера, та часть, где я попытался получить доступ к моей модели

$this->load->model('account'); 
    $acc = $this->account->retrieve($sess_userid); 
    var_dump($this->account->retrieve($sess_userid)); 
    echo $acc->user_id; 

Обратите внимание, что $ sess_userid имеет значение. его номер

У кого-нибудь возникла идея решить эту проблему?

ОБНОВЛЕНО

print_r()

Array (
     [0] => stdClass Object (
      [account_id] => 2000005 
      [userid] => admin 
      [user_pass] => d033e22ae348aeb5660fc2140aec35850c4da997 
      [sex] => M 
      [email] => [email protected] 
      [group_id] => 99 
      [admin] => 1 
      [restrictions] => 0 
      [state] => 0 
      [unban_time] => 0 
      [expiration_time] => 0 
      [logincount] => 0 
      [lastlogin] => 0000-00-00 00:00:00 
      [last_ip] => 
      [birthdate] => 0000-00-00 
      [character_slots] => 0 
      [pincode] => 
      [pincode_change] => 0 
     ) 
) 

var_dump()

array(1) { 
    [0]=> object(stdClass)#23 (18) { 
     ["account_id"]=> string(7) "2000005" 
     ["userid"]=> string(5) "admin" 
     ["user_pass"]=> string(40) "d033e22ae348aeb5660fc2140aec35850c4da997" 
     ["sex"]=> string(1) "M" 
     ["email"]=> string(18) "[email protected]" 
     ["group_id"]=> string(2) "99" 
     ["admin"]=> string(1) "1" 
     ["restrictions"]=> string(1) "0" 
     ["state"]=> string(1) "0" 
     ["unban_time"]=> string(1) "0" 
     ["expiration_time"]=> string(1) "0" 
     ["logincount"]=> string(1) "0" 
     ["lastlogin"]=> string(19) "0000-00-00 00:00:00" 
     ["last_ip"]=> string(0) "" 
     ["birthdate"]=> string(10) "0000-00-00" 
     ["character_slots"]=> string(1) "0" 
     ["pincode"]=> string(0) "" 
     ["pincode_change"]=> string(1) "0" 
    } 
} 
+0

сделать у вас есть user_id в таблице, потому что y ou назначают в account_id еще получение всех записей –

+0

just print_r ($ acc); и дайте нам знать, что вы получите .. ?? – Gautam3164

+0

Можете ли вы вставить то, что вы получаете в var_dump? –

ответ

1

Когда вы возвращаете объект, который вы должны использовать строку, как вы получаете одну запись ,

public function retrieve($user_id = FALSE) 
{ 
    if($user_id === FALSE) 
    { 
     $query = $this->db->get('login'); 
     return $query->result(); 
    } 
    else 
    { 
     $query = $this->db->get_where('login',array('account_id'=>$user_id)); 
     return $query->row(); 
    } 
} 

и доступ к нему, как этот

echo $acc->user_id; 

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

return $query->result(); 

и

echo $acc[0]->user_id; 
echo $acc[1]->user_id; 
echo $acc[2]->user_id; 
+0

yes Я возвращаю один объект, потому что это строка(), но почему я не могу получить доступ, или он указывает, что userid не существует, на самом деле это делается в базе данных. – lemoncodes

+0

Посмотрите этот результат 'return $ query->(); 'он возвращает массив объектов, поэтому он говорит, пытаясь получить свойство не-объекта, потому что возвращаемая вещь - это массив, содержащий объект. Используйте 'return $ query-> row();' –

+0

, но он не возвращает результат(), потому что он вступает в первое условие – lemoncodes

Смежные вопросы