2015-12-18 44 views
1

对不起,我会试着解释我正在尝试做什么。所以,我有两个表ea_usersea_user_settings如何连接两个表ID并验证特定字段?

ea_users - 结构

id | data| 
5 | 0 

ea_user_settings - 结构

|id | username| 
5 Sandokan 

现在我想要做的是验证如果某些用户名在系统中已经存在。表ea_users包含该id,表示单个用户的id,以及data字段(0个用户未被删除,还有1个用户被删除)。
ea_user_settings表中我有我的用户的所有设置。现在对于检查一个可能的想法,如果某个用户名已经存在,是这样的:

public function validate_username($username, $user_id) 
{ 
    $num_rows = $this->db->get_where('ea_user_settings', 
     array('username' => $username, 'id_users <> ' => $user_id))->num_rows(); 
    return ($num_rows > 0) ? FALSE : TRUE; 
} 

这个函数有两个参数:usernameuser_id,那将要插入的usernameuser_id(如果这是增值的手段,我'm实际上保持更新用户,所以如果用户名已经存在,我不需要检查它。 其实所有的工作正常,但我想检查username是否存在只有数据等于0的用户,如果数据是1用户名是可用的'因为它被删除。我不知道情况是否更清楚。我如何在单个查询中实现这一目标?

回答

1

你可以尝试这样的事情

public function validate_username($username, $user_id) 
{ 
     $num_rows = 
     $this->db->select('*') 
     ->from('ea_user_settings') 
     ->join('ea_users', 'ea_user_settings.id_users = ea_users.id', 'left') 
     ->where(array('ea_user_settings.username' => $username, 'ea_user_settings.id_users <> ' => $user_id, 'ea_users.data' => 1)) 
     ->get(); 
     return ($num_rows->num_rows() > 0) ? 'We have this username and it was deleted!' : 'This username was not deleted'; 
} 
+0

确定的数据= 1点的工作,但如果我插入不存在于数据库查询的用户名返回false。 – Sandokan

+0

@Sandokan你能解释一下你想要检查的内容吗?当然,如果它不存在它将返回false,因为我们的查询检查这个特定的用户名 –

+0

@IlanHasanov我猜用户需要检查用户名是否存在未删除的用户(数据= 0),所以也许在您的查询您应该将ea_users.data更改为0,并在第一步中将返回false设置为不在第二步中。这是正确的? – Dillinger

相关问题