【问题标题】:Codeigniter, Active record, join second table values as arrayCodeigniter,活动记录,将第二个表值连接为数组
【发布时间】:2014-02-22 19:31:20
【问题描述】:

两个表: 第一 - kons,第二 - 订单。由字段 kons.id 和 order.id_kons 链接
这是我的查询:

$this->db->select("k.id as k_id, DATE_FORMAT(k.datecreate, '%d/%m/%Y %H:%i:%s') as k_dt, o.id as o_id",false);
 $this->db->join('orders as o', 'o.id_kons = k.id','inner');
 $this->db->from('kons as k');<br>
 return $this->db->get()->result_array();

结果是(例如,剪切):

array(20) {
  [0]=>
  array(3) {
    ["k_id"]=>
    string(2) "45"
    ["k_dt"]=>
    string(19) "22/02/2014 15:41:35"
    ["o_id"]=>
    string(3) "533"
  }

  } .....

但我需要这样的东西:

array(x) {
  [0]=>
  array(3) {
    ["k_id"]=>
    string(2) "45"
    ["k_dt"]=>
    string(19) "22/02/2014 15:41:35"
    ["o_id"]=>
    array(3) "533,534,536" or string(x) "533,534,536"
  }

【问题讨论】:

    标签: php mysql codeigniter activerecord join


    【解决方案1】:

    您可以使用GROUP_CONCAT(expr) 来获取逗号分隔的订单 ID,但由于默认设置为 1024 个字符的字符长度限制,不建议这样做,但可以增加

    $this->db->select("k.id as k_id, 
    DATE_FORMAT(k.datecreate, '%d/%m/%Y %H:%i:%s') as k_dt, 
    GROUP_CONCAT(o.id) as o_id",false);
    $this->db->join('orders as o', 'o.id_kons = k.id','inner');
    $this->db->from('kons as k');
    $this->db->group_by("k.id");
    return $this->db->get()->result_array();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-22
      • 2014-03-14
      • 2014-04-05
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多