php - 加入多对一

标签 php mysql sql codeigniter join

在 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、名称)来自第一个表,最后一个(图像)来自第二个左表。一切都很好,但是当我只需要一个 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 active record 来完成吗,完全可以吗?

最佳答案

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

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

关于php - 加入多对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34614352/

相关文章:

javascript - Ajax 调用后加载脚本不起作用

mysql - 如何使用var作为计数器作为累加值

android - 如何在 Android 中使用 sqlite 获取更新的行数?

sql - 如何使用SQL查看表是否存在?

mysql - 优化慢速查询以查找序列中的漏洞

php - 如何防止 PhpStorm 在没有提示的情况下在退出时保存文件?

PHP,可以在不指定函数名称的情况下从同一函数中调用函数吗?

php - 使用 Yahoo SMTP 在 PHP 中发送邮件

具有排名行的 MySql View

php - 搜索数据库以匹配用户输入时出现问题