Guilherme, constantemente recebo o erro "Cannot use object of type stdClass as array" ao carregar a session para uma variável e depois tentar usá-la como um array.
Por exemplo: No exercício desse capítulo criamos a função index no controller vendas, tal como abaixo:
public function index() {
$this->load->helper("currency_helper");
$usuario = $this->session->userdata("usuario_logado");
$this->load->model("produtos_model");
$produtosVendidos = $this->produtos_model->buscaVendidos($usuario);
$dados = array("produtosVendidos" => $produtosVendidos);
$this->load->view("vendas/index", $dados);
}
Depois usamos a variável $usuario como um array carregando dentro da variável $id o que consta em $usuario["id"]. Isso é feito dentro da função buscaVendidos criada dentro do produtos_model, tal como abaixo:
public function buscaVendidos($usuario) {
$id = $usuario["id"];
$query = array(
"usuario_id" => "$id",
"vendido" => "1"
);
return $this->db->get_where("produtos", $query)->result_array();
}
Quando vamos testar no navegador recebemos o erro:
Fatal error: Cannot use object of type stdClass as array in /var/www/mercado/application/models/produtos_model.php on line 41
Onde a linha 41 é:
$id = $usuario["id"];
Por que está acontecendo isso? Eu consegui resolver o problema de outra maneira, passando somente o usuario_id para a função buscaVendidos. Mas se eu precisar mandar todos os dados que estão na sessão do usuário, fica meio feio dessa forma.
No próximo post mandarei como eu fiz para resolver.