codeIgniter活动记录入党表 [英] CodeIgniter Active Record For Joining The Tables
问题描述
我有下面的表格。
apartments
id name slug created modified
apartment_amenities
id name slug apartment_id created modified
apartment_activities
id name slug apartment_id created modified
在我想是这样的观点。
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
在我尝试这样的模式。
$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();
但我只得到单一的设施和活动,甚至公寓有许多设施和活动。该结果如下。
But I'm getting only single amenity and activity even the apartment has many amenities and activities. The result is as follows.
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
)
)
我想要的结果类似如下:
I want the result something like as follows.
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
)
)
),
)
请给我建议我将如何得到解决。这项工作将更加AP preciated。
Please suggest me how would I get the solution. The work would be more appreciated.
推荐答案
要设置一个合适的阵列,其格式为您寻找我会建议已具备了几个模型。
To setup a proper array, in the format your looking for i would advise having a few models in place.
让我们安装一个之情况
控制器:
$apartments = $this->apartment_model->getApartments(); // Get All Apartments
foreach($apartments as &$apartment)
{
$apartment->amenities = $this->apartment_model->getAmenities($apartment->id);
$apartment->activities= $this->apartment_model->getActivities($apartment->id);
// Add / Modify any addition properties
}
// Do something with the $apartments array
型号:
class Apartment_model extends model
{
function getApartments()
{
$this->db->select('id, slug, name');
$this->db->from('apartments');
$query = $this->db->get();
return $query->result();
}
function getAmenities($apartment_id)
{
$this->db->select('name');
$this->db->from('apartment_amenities');
$this->db->where('id', $apartment_id);
$query = $this->db->get();
return $query->result();
}
function getActivities($apartment_id)
{
$this->db->select('name');
$this->db->from('apartment_activities');
$this->db->where('id', $apartment_id);
$query = $this->db->get();
return $query->result();
}
}
当然,要记住这并不加载的观点又或任何移动数据过去的控制器,但它至少会设置阵列。
Of course keep in mind this doesnt load the view yet or move your data anywhere past the controller, but it will at least setup the array.
我希望这有助于让你开始。
I hope this helps get you started.
这篇关于codeIgniter活动记录入党表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!