Php 使用codeigniter复制结果的内部连接

Php 使用codeigniter复制结果的内部连接,php,sql,codeigniter,Php,Sql,Codeigniter,我有下面的代码,我试图从大约4个不同的表中获取基于一个订单号的信息。我正在使用codeigniter,通过下面的代码,我得到了相同记录的副本。当数据库中只有一行真正存在时,基本上显示两行 function get_orders($user_id) { $this->db->select('*'); $this->db->from('Orders'); $this->db->join('Order_Options', 'Orders.or

我有下面的代码,我试图从大约4个不同的表中获取基于一个订单号的信息。我正在使用codeigniter,通过下面的代码,我得到了相同记录的副本。当数据库中只有一行真正存在时,基本上显示两行

function get_orders($user_id)
{
    $this->db->select('*');
    $this->db->from('Orders');
    $this->db->join('Order_Options', 'Orders.orderNumber = Order_Options.orderNumber');
    $this->db->join('Order_Products', 'Orders.orderNumber = Order_Products.orderNumber');
    $this->db->join('Order_Status', 'Orders.order_status = Order_Status.id');
    $this->db->where(array('user_id' => $user_id));

    $query = $this->db->get();
    return $query->result();
}

我从codeigniters在线用户手册中得到了这个代码。我自己添加的唯一一行是
where
return

我不知道这个工具,但它应该会为订单中的每个产品返回一个单独的记录。(或者每个选项。这些看起来像多对多连接表。我假设状态ID是唯一的,所以可能不是这样。)


我要做的调试是开始简化查询,然后我可以看到是哪个部分导致了重复

调试
在控制器的构造函数中启用

$this->output->enable_profiler(TRUE);
这将显示
视图下的所有详细信息,包括执行的
查询。请在phpmyadmin和debug中使用该查询

检查这个

function get_orders($user_id)
    {
        $query=$this->db->select('*');
        ->distinct()
        ->from('Orders');
        ->join('Order_Options', 'Orders.orderNumber = Order_Options.orderNumber');
        ->join('Order_Products', 'Orders.orderNumber = Order_Products.orderNumber');
        ->join('Order_Status', 'Orders.order_status = Order_Status.id');
        ->where(array('user_id' => $user_id));
        ->get();
        return $query->result();
    }

我按照你在phpmyadmin中所说的做了,删除了代码中的第一个连接,只检索了一个包含所有变量的结果。如何解决这个问题?