我希望通过user_id和added_by=user&self获取患者数据 但它显示来自其他用户id基数"added_by"=>"self"的数据

我知道SQL查询是:

SELECT * FROM `patients` WHERE ( `added_by` = 'user' OR `added_by` = 'self' ) AND `user_id` = '1'

但我需要知道如何在codeigniter3中进行查询 以下是我的代码:

public function get_all_patients_by_user($user_id)
    {
        $this->db->where(["added_by"=>"user","user_id"=>$user_id]);
        $this->db->or_where(["added_by"=>"self","user_id"=>$user_id]);
        $data = $this->db->get("patients")->result_array();
        return $data;
    }

请帮助我得到正确的代码.

推荐答案

由于CodeIgniter默认处理or_whereand_where条件的方式,您的原始查询生成了错误的SQL struct .

要获得所需的查询 struct ,其中"added_by"是"user"或"self",而"user_id"是‘1’,您应该使用CodeIgniter的group_start和group_end方法显式地对"added_by"条件进行分组,然后将它们与"user_id"组合在一起.

public function get_all_patients_by_user($user_id)
{
    $this->db->group_start();
    $this->db->where("added_by", "user");
    $this->db->or_where("added_by", "self");
    $this->db->group_end();
    $this->db->where("user_id", $user_id);

    $data = $this->db->get("patients")->result_array();
    return $data;
}

这段代码生成您想要的SQL查询.

SELECT * FROM `patients` WHERE ( (`added_by` = 'user' OR `added_by` = 'self') AND `user_id` = '1' )

Php相关问答推荐

如何使用查询范围在Statamic中按组过滤用户?

在WooCommerce中处理客户总支出中的退款

PHP FFI—Convert void * to int

PHP从响应应用程序json获取文件代码和URL

PHP Laravel Web应用启动时间&>15秒

在Symfony 6.4中将工作流动态添加到服务

如何使用索引加速和优化MySQL搜索

在WordPress中从CPT中删除插件

PHP -流加密启用服务器切断字节

PHP Match如何准确判断条件?

对产品/库存结果集进行分组和计数,形成多维分层数组

WooCommerce 中一件免费产品的数量折扣

.htaccess 重写规则问题

正则表达式将文本替换为标签 html 以字符开头

为WooCommerce中的运输方式ID设置必填的 checkout 订单备注字段

Woocommerce注册中的自定义复选框验证错误提示问题

在WooCommerce单产品页面中显示特价产品的节省金额

WooCommerce - 调用功能ID不正确.不应直接访问订单属性

Laravel:ArgumentCountError: 函数 App\Mail 的参数太少

Laravel 查询关系是否为 bool