对于fuorviant标题感到抱歉,但我会尝试解释我正在尝试做什么。所以,我有两个表ea_users
和ea_user_settings
。
ea_users - STRUCTURE
id | data|
5 | 0
ea_user_settings - STRUCTURE
|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;
}
这个函数有两个参数:username
和user_id
,将要插入的username
和user_id
(如果这是有价值的意味着我实际上是保持更新用户,所以如果用户名已存在,我不需要检查行。
实际上一切正常,但我想检查username
是否仅存在于数据等于0的用户,如果数据为1则用户名可用'因为它被删除。我不知道情况是否更清楚。我如何在单个查询中实现这一目标?
答案 0 :(得分: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';
}