Objeto da classe Stdclass não pôde ser convertido em string
-
25-09-2019 - |
Pergunta
Estou tendo um problema com o PHP no momento, estou recebendo esse erro,
Object of class stdClass could not be converted to string
O erro ocorre quando eu executo esta parte do código no meu site,
function myaccount() {
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
//var_dump($data['user_data']);
$this->load->model('users_model');
$data['user_info'] = $this->users_model->get_user_and_roadmaps_by_id($this->uri->segment(3));
$this->template->build('users/my_account', $data);
}
A linha em que o erro está ocorrendo é este,
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
E esta linha está chamando esta função,
function get_userdata() {
$CI =& get_instance();
if(!$this->logged_in()) {
return false;
} else {
$query = $CI->db->get_where('users', array('user_id' => $CI->session->userdata('user_id')));
return $query->row();
}
}
Eu realmente não agora, agora, qual é esse problema, então qualquer ajuda seria ótima.
Solução
Provavelmente o userdata()
A função está retornando um objeto, não uma string. Observe a documentação (ou var_dump o valor de retorno) para descobrir qual valor você precisa usar.
Outras dicas
Eu uso o Codeignator e recebi o erro:
Objeto da classe Stdclass não pôde ser convertido em string.
Para este post, recebo meu resultado
Eu uso na minha seção modelo
$query = $this->db->get('user', 10);
return $query->result();
E a partir deste post eu uso
$query = $this->db->get('user', 10);
return $query->row();
E eu resolvi meu problema
Em geral para se livrar de
Objeto da classe Stdclass não pôde ser convertido em string.
tente usar echo '<pre>'; print_r($sql_query);
Para minha consulta SQL, obteve o resultado como
stdClass Object
(
[num_rows] => 1
[row] => Array
(
[option_id] => 2
[type] => select
[sort_order] => 0
)
[rows] => Array
(
[0] => Array
(
[option_id] => 2
[type] => select
[sort_order] => 0
)
)
)
Para acessar, existem diferentes métodos, por exemplo: num_rows, linha, linhas
echo $query2->row['option_id'];
Dará o resultado como 2
tente isso
return $query->result_array();
Você mencionou em outro comentário que não espera que sua função get_userdata () retorne um objeto Stdclass? Se for esse o caso, você deve cuidar dessa linha nessa função:
return $query->row();
Aqui, o objeto CodeIgniter Database "$ query" possui seu método row () chamado, que retorna um stdclass. Como alternativa, você pode executar row_array () que retorna os mesmos dados no formulário de matriz.
De qualquer forma, suspeito fortemente que essa não seja a causa raiz do problema. Você pode nos dar mais alguns detalhes, talvez? Brinque com algumas coisas e deixe -nos saber como é. Não podemos brincar com seu código, por isso é difícil dizer exatamente o que está acontecendo.
O que eu estava procurando é uma maneira de buscar os dados
Então eu usei isso $data = $this->db->get('table_name')->result_array();
e, em seguida, busquei meus dados exatamente como você opera em objetos de matriz.
$data[0]['field_name']
Não há necessidade de se preocupar com a fundição do tipo ou qualquer coisa diretamente direto.
Então funcionou para mim.