我有一个包含以下数据的用户表:
id first_name
10 user one
21 user two
39 user 3
因此,我希望获取具有特定id
的所有用户,例如,当我传递id
为10和21时,我希望检索前2个用户。
在Codeigniter中,我的模型中有一个函数getUsersByIds
,如下所示:
class UsersModel extends CI_Model{
public function getUsersByIds($ids){
$data = [];
foreach($ids as item){
$this->db->where('user_id',(int)$item);
}
$rs = $this->db->get('users');
return $rs->result_array();
}
}
现在,每当我尝试通过以下方式调用控制器中的上述模型时:
$this->load->model('UsersModel');
var_dump($this->UsersModel->getUsersByIds([10,21])) //this is null
上面的var_dump
是null
。我怀疑这个问题发生在foreach循环中。有没有一种方法可以像上面那样用动态数据做where
和where in
Codeigniter?
发布于 2020-11-08 20:40:38
您的案例不应该真正使用查询构建器中的where方法。它应该使用与数组完全配合使用而构建的where_in。
因此,您的模型函数应该如下所示:
class UsersModel extends CI_Model{
public function getUsersByIds($ids){
if (empty($ids) {
return array();
}
$this->db->where_in('user_id',$ids);
$rs = $this->db->get('users')->result_array();
return $rs;
}
}
https://stackoverflow.com/questions/64733302
复制相似问题