我使用CI tank_auth库来获取用户的注册表单,并且需要添加tank_auth没有附带的新字段。
我确实参考了这个Tank Auth Adding Fields,但它从来没有帮助我解决我的疑问。
让我们说,我希望在注册过程中有额外的“名称”字段,我在视图和function register()
控制器中创建它,这样可以正常工作,除非我想将它放入user_profiles
表,我创建了一个名为name
的列,然后在tank_auth模型的users.php中,我找到了以下方法并添加了:
private function create_profile($user_id, $name)
{
$this->db->set('user_id', $user_id);
$this->db->set('name', $name);
return $this->db->insert($this->profile_table_name);
}
当我运行注册时,没有发生错误,我检查表,name
字段没有插入,所以我想它可能没有参数传递给$name
,这是我的问题,我在哪里可以将参数传递给这个函数?
我希望有一个有这个图书馆经验的人可以清除我的怀疑。
感谢。
SOLUTION:
@ Joan-Diego Rodriguez 在注册过程中如何在tank_auth的user_profiles表中添加其他字段方面有很好的做法。
CodeIgniter: Passing fields to user_profiles database with Tank_auth
希望这可以帮助那些寻求相同解决方案的人。
答案 0 :(得分:0)
您好我已经遇到过这个问题,我的解决方案很简单
创建用户 - > create user_profiles - >更新user_profiles
请转到TA模型“用户”并添加此方法/功能
function update_user_profile($user_id, $data)
{
$this->db->where('user_id', $user_id);
$this->db->update($this->profile_table_name, $data);
}
制作auth.php的副本(以防万一)并在注册方法中做一些调整(如下所示)请注意这里有更多的代码把原文放在那里(我修改了我的)。 / p>
if ($this->form_validation->run()) {
// validation ok
if (!is_null(<here is some more code>)) {
$user_data = array(
'first_name' => $this->form_validation->set_value('first_name'),
'last_name' => $this->form_validation->set_value('last_name'),
);
//$this->load->model('tank_auth/users');
$this->users->update_user_profile($data['user_id'], $user_data); //update happens
} else {
$errors = $this->tank_auth->get_error_message();
foreach ($errors as $k => $v) $data['errors'][$k] = $this->lang->line($v);
}
}
修改强> 获取用户需要使用SQL JOIN作为示例显示(使用额外的first_name / last_name)我希望你能得到这个想法
检索将其放入用户模型的所有用户
function get_all_users() {
$this->db->select('users.id, users.username, users.activated, users.banned, users.ban_reason, user_profiles.id as up_id, user_profiles.first_name, user_profiles.last_name');
$this->db->from('users');
$this->db->join('user_profiles', 'users.id = user_profiles.user_id');
return $this->db->get()->result();
}
检索一个用户(刚刚添加了where子句)
function get_ser($id){
$this->db->select('users.id, users.username, users.activated, users.banned, users.ban_reason, user_profiles.id as up_id, user_profiles.first_name, user_profiles.last_name');
$this->db->from('users');
$this->db->join('user_profiles', 'users.id = user_profiles.user_id');
$this->db->where('users.id', $id);
$q = $this->db->get();
return ($q->num_rows() > 0) ? $q->result()[0] : FALSE;
}