【问题标题】:Join many to one加入多对一
【发布时间】:2016-04-09 10:26:43
【问题描述】:

在 Codeigniter 中,我尝试加入两个具有一对多关系的表。我想从我的表housetype 中获得一个结果,并从其他表housetype_member 中获得它的所有值/成员:

$this->db->select('*');
$this->db->join('housetype_member', 'housetype_member.housetype_id = housetype.PkId', 'left');
$result = $this->db->get_where('housetype', array('PkId' => $id));

return $result->result();

到目前为止,我得到了这样的结果:

array (size=2)
  0 => 
    object(stdClass)[28]
      public 'PkID' => string '4' (length=1)
      public 'Name' => string 'Classic' (length=7)
      public 'image' => string '1449063250.jpg' (length=14)
  1 => 
    object(stdClass)[30]
      public 'PkID' => string '4' (length=1)
      public 'Name' => string 'Classic' (length=7)
      public 'image' => string '1449063288.gif' (length=14)

前两个对象值(PkID、Name)来自第一个表,最后一个(图像)来自第二个左表。一切都很好,但是当我只需要一个 housetype 对象时,我得到了一个包含两个元素的数组。

有没有办法编写上面的代码,让我返回的对象看起来像这样:

object(stdClass)[28]
  public 'PkID' => string '4' (length=1)
  public 'Name' => string 'Classic' (length=7)
  public 'image' => 
    array (size=2)
      0 => string '1449063250.jpg' (length=14)
      1 => string '1449063288.gif' (length=14)

我需要第一个表中的一个结果,我想加入第二个表中的所有成员。

可以用 Codeigniters 的活动记录来完成吗,完全可以吗?

【问题讨论】:

    标签: php mysql sql codeigniter join


    【解决方案1】:

    group_by() 子句添加到您的查询中。

    $this->db->group_by('housetype.PkId');
    

    【讨论】:

    • 所有这一切都是它将我的结果分组到一个对象中,并且我丢失了所有图像,除了最后一个。我需要所有图像的数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多