用于连接表的CodeIgniter活动记录

5 activerecord join codeigniter codeigniter-2

我跟着表.

       apartments
       id name slug created modified

       apartment_amenities
       id name slug apartment_id created modified

       apartment_activities
       id name slug apartment_id created modified
Run Code Online (Sandbox Code Playgroud)

在视图中我想要这样的东西.

       no apartment_name    amenities       activities

       1  shobha_comnplex   party hall      pamplets
                            swimming pool   banners
                            play area       boards

       2  navami_comnplex   party hall      boards
                            swimming pool   banners
                            club house      pamplets
Run Code Online (Sandbox Code Playgroud)

在模型中我试过这样的.

        $this->db->select('apartments.id, apartments.slug, apartments.name, apartment_amenities.name as amenity_name, apartment_activities.name as activity_name');
        $this->db->from($this->_table);
        $this->db->join('apartment_amenities', 'apartment_amenities.apartment_id = apartments.id', 'left');
        $this->db->join('apartment_activities', 'apartment_activities.apartment_id = apartments.id', 'left'); 
        return $this->db->get();
Run Code Online (Sandbox Code Playgroud)

但我只有单一的设施和活动,即使公寓有许多设施和活动.结果如下.

Array
(
    [0] => 
        (
            [id] => 1
            [slug] => shobha_complex
            [name] => shobha complex
            [amenity_name] => party hall
            [activity_name] => pamplets
        ),

    [1] => 
        (
            [id] => 1
            [slug] => navami_complex
            [name] => navami complex
            [amenity_name] => party hall
            [activity_name] => boards
        )
)
Run Code Online (Sandbox Code Playgroud)

我希望结果如下所示.

    Array
    (
        [0] => 
            (
                [id] => 1
                [slug] => shobha_complex
                [name] => shobha complex
                [amenities] => Array(
                    [0] => 
                         (
                            [name] => party hall
                         ),
                    [1] => 
                         (
                            [name] => swimming pool
                         ),
                    [2] => 
                         (
                            [name] => play area
                         )
                ),
                [activities] => Array(
                    [0] => 
                         (
                            [name] => pamplets
                         ),
                    [1] => 
                         (
                            [name] => banners
                         ),
                    [2] => 
                         (
                            [name] => boards
                         )
                )
            ),

        [1] => 
            (
                [id] => 1
                [slug] => navami_complex
                [name] => Navami complex
                [amenities] => Array(
                    [0] => 
                         (
                            [name] => party hall
                         ),
                    [1] => 
                         (
                            [name] => swimming pool
                         ),
                    [2] => 
                         (
                            [name] => club house
                         )
                ),
                [activities] => Array(
                    [0] => 
                         (
                            [name] => boards
                         ),
                    [1] => 
                         (
                            [name] => banners
                         ),
                    [2] => 
                         (
                            [name] => pamplets
                         )
                )
            ),
    )
Run Code Online (Sandbox Code Playgroud)

请建议我如何获得解决方案.这项工作将更受赞赏.

Phi*_*oss 0

删除$this->db->group_by方法调用。这只会为每间公寓返回一个结果。如果你删除它,你应该得到你想要的所有便利设施等。

唯一的问题是你会得到这样的结果

   no apartment_name    amenities       activities

   1  shobha_comnplex   party hall      pamplets
   1  shobha_comnplex   swimming pool   banners
   1  shobha_comnplex   play area       boards

   2  navami_comnplex   party hall      boards
   2  navami_comnplex   swimming pool   banners
   2  navami_comnplex   club house      pamplets
Run Code Online (Sandbox Code Playgroud)