【问题标题】:How to work with join data in codeigniter?如何在 codeigniter 中使用连接数据?
【发布时间】:2010-12-29 11:01:00
【问题描述】:

我正在玩 codeigniter 并试图了解活动记录系统等。 我已经设置了几个表,并正在尝试对它们进行连接,例如:

function GetOrganisationsAndBuildingDetails()
{
    $this->db->select('organisations.organisation_name,
                       organisations.organisation_id,
                       buildings.building_name,
                       buildings.address1');
    $this->db->from('organisations')->join('buildings', 'buildings.organisation_id = organisations.organisation_id');
    $query = $this->db->get();
    return $query->result();
}

在我的数据库中,我有一个组织有两个相关的建筑物。上面的查询返回两个对象(每个建筑物一个) - 但是,组织是重复的。

  • stdClass 对象 ( [organisation_name] => 这是一个示例组织 [组织 ID] => 1 [building_name] => 测试建筑 [地址1] => 123456)

  • stdClass 对象 ( [organisation_name] => 这是一个示例组织 [组织 ID] => 1 [building_name] => teeeest 建筑物 [地址1] => 123456)

我想我期待的东西类似于一个返回对象和一系列用于相关建筑物的嵌套对象。这可能吗? 如果不是,他们是安排返回数据的推荐方式,以便我可以轻松地在视图中循环遍历它吗? (foreach 组织、foreach 建筑物等)。

抱歉,如果我在这里有点密集。我来自 .net 和(特别是 linq 到 SQL),这些东西有点不同)

【问题讨论】:

    标签: php activerecord codeigniter


    【解决方案1】:

    查询必然如你所说返回重复数据,你得到这样的结果后要整理它们

    $buildings = array();
    
    foreach ( $result_object as $organization ) {
        $building_data = array(
            'building_name' => $organization->building_name,
            'address'       => $organization->address,
        );
        $buildings[$organization->organization_name][] = $building_data;
    }
    

    这样,组织将在多维数组的第一个键中“压缩”,更深一层,您将获得有关建筑物的信息。希望这会有所帮助。

    【讨论】:

    • 我可能在这里误解了您,但该代码似乎会创建一个以组织名称为键(正确)的数组和一个建筑物集的详细信息,因为每次迭代都会覆盖这些信息......
    • 啊是的!这样可行。谢谢你的帮助。希望有一种自动方式让模型返回关联数据的嵌套数组...没关系!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多