好的,所以这个让我感到困惑。
当用户登录时,我在会话中设置用户数据,如下所示:
$data = array();
$data['email'] = $this->input->post('email');
// get the user's info where it matches their email in the db.
$user = $this->User_model->get_user($data);
$this->session->set_userdata('user_session', $user);
现在这很好用。它user_session
在会话数据中创建一个对象。我同意。
然后当用户更新他们的信息时,我想重置数据user_session
以匹配他们的新数据。我这样做是这样的:
$data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'email' => $this->input->post('email'),
'phone' => $this->input->post('phone'),
'street1' => $this->input->post('street1'),
'street2' => $this->input->post('street2'),
'city' => $this->input->post('city'),
'state' => $this->input->post('state'),
'zip' => $this->input->post('zip'),
'password' => $encrypted_password,
'organizations_id' => $this->input->post('org_select')
);
$user = $this->User_model->get_user($data);
$this->session->set_userdata('user_session', $data);
现在$data
这里被用来更新他们在数据库中的信息,然后我重用它通过在他们的email
.
最后,这是我对它们都使用的模型方法:
public function get_user($data)
{
return $this->db
->where('email', $data['email'])
->select('first_name, last_name, email, password, id, organizations_id')
->get('users')
->row();
}
这有效但不同。它没有给我一个对象,而是给了我一个数组。这在我的代码的其他地方导致了很多问题。
我如何控制它是否给了我一个对象或一个数组?
编辑:
我意识到了一个愚蠢的举动。当用户更改他们的信息时,我正在发送$data
而不是发送到我的模型。$user
所以我解决了这个问题,现在我两次都得到了一个对象。但我仍然想知道这两种方法如何给出不同的结果。这样我以后就可以控制了。
话虽如此,这是我的官方问题:
如何控制会话数据的输入,使其成为数组或对象?