You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过数组从数据库检索记录:控制器与模型代码技术咨询

实现通过数组从数据库检索唯一客户记录的完整方案

看起来你已经搭好了控制器的核心逻辑,现在只需要补全模型方法,同时修正控制器里的一个小错误,就能完成功能了,我来一步步给你讲:

第一步:修正控制器里的语法错误

你控制器里的这行代码少了美元符号$,会导致变量未定义报错:

data['related_view']='system_rating_appointments';

改成:

$data['related_view']='system_rating_appointments';

第二步:补全模型mod_customers的get_unique_customer方法

这个方法要实现接收customer_id数组,从数据库检索对应的唯一客户记录,用CodeIgniter的查询构造器来写既安全又简洁:

public function get_unique_customer($customer_ids) {
    // 先做空数组校验,避免传入空数组导致SQL查询错误
    if (empty($customer_ids)) {
        return [];
    }

    // 使用where_in匹配数组中的所有customer_id
    $this->db->where_in('customer_id', $customer_ids);
    // 确保返回的客户记录唯一,避免重复(如果一个客户对应多条评分记录)
    $this->db->distinct();
    // 或者用group_by替代distinct,效果类似:$this->db->group_by('customer_id');

    // 执行查询,这里替换成你的客户表实际名称,比如tbl_customers
    $query = $this->db->get('customers');

    // 返回结果集,result_array()返回关联数组,也可以用result()返回对象
    return $query->result_array();
}

代码说明:

  • 空数组校验:防止传入空数组时,where_in生成无效的SQL语句,避免数据库抛出错误。
  • where_in方法:CodeIgniter内置的安全查询方法,自动处理数组转SQL的逻辑,还能预防SQL注入,比手动拼接SQL靠谱多了。
  • distinct/group_by:因为你的$first_names数组里可能有重复的customer_id(同一个客户有多条评分),用这两个方法可以确保返回的客户记录是唯一的,二选一即可。
  • 返回结果:result_array()适合在视图里用数组方式访问数据,result()则返回对象,根据你的项目习惯选择就行。

第三步:验证功能

你之前注释的var_dump($data['result_cus']); die();可以取消注释,运行后查看输出,确认是否正确获取到了对应的唯一客户记录。如果一切正常,就可以在视图system_rating_appointments里遍历$result_cus来展示数据啦。

内容的提问来源于stack exchange,提问作者user3806999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:26:42