我目前正在开发一个内容管理系统,我想听听您对以下内容的看法:
我有一张桌子,page
. 假设它看起来像这样
ID | Title | Content
1 | Test | This is a test
除此之外,我还有一个page_option
表(所以我可以存储与页面相关的选项,但我不希望有一个有限的选项列表 - 如果需要,模块可以将自己的选项添加到页面中。)
该page_option
表可能如下所示:
page_id | option_key | option_value
1 | background | red
1 | module1_key | chicken
现在要检索页面对象,我使用 Active Record 类执行以下操作(这是针对此问题的伪编码):
function get_by_id($page_id) {
$this->db->where('id', $page_id);
$page_object = $this->db->get('page');
if($page_object->num_rows() > 0) {
$page = $page_object->row();
$this->db->where('page_id', $page_id);
$options_object = $this->db->get('option');
if($options_object->num_rows() > 0) {
$page->options = $options_object->result();
}
return $page;
}
return $page_object->row();
}
我想知道的是,有没有办法在一个查询中执行此操作,以便选项键成为我选择中的虚拟列,所以我会得到:
ID | Title | Content | background | module1_key
1 | Test | This is a test | red | chicken
在我的结果中,而不是对每一行进行单独的查询。如果有 10,000 个呢?等等。
提前谢谢了!