您是否使用 codeigniter 进行此开发?下面的这个答案是基于
来自 codeigniter 的 Web 应用程序框架。就这样吧,
问题是我希望页面[root]->fruits->tropical->bananas
只能从此 url 访问:
http://localhost/cms/fruits/tropical/bananas/.
那么在你的控制器中创建一个函数名称为 fruits 和两个参数的函数?例如
class Cms extends CI_Controller {
...
...
...
public function __construct() {
$this->load->model('cms_model');
}
public function fruits($tropical, $bananas) {
$string = $this->cms_model->getPage($tropical, $bananas);
// load the view you want.
$this->load->view('');
}
...
...
...
}
到目前为止,我想出的是 cms 表有一个父字段
指向其父级。问题是:如何解析uri地址
并以尽可能少的查询/尽可能高效地从数据库中选择一行?
Table cms:
Id
Slug
ParentId
Table cms_parent:
Id
让我们用上面显示的两个示例表来描述,cms 表和 cms 父表。您没有在问题中准确说明您的查询需要什么或查询结果返回。所以下面是我根据你的问题描述的猜测,即通过使用公共键连接它们来查询两个表,然后应用条件。
// select * from cms t1 join cms_parent t2 on t1.ParentId = t2.Id where t1.Id = '' and t2.ParentId = 'level1';
public function getPage($level0, $level1) {
$this->db->select('*');
$this->db->from('cms');
$this->db->join('cms_parent', 'cms.ParentId = cms_parent.Id');
$this->db->where('cms.Id', $level0);
$this->db->where('cms.ParentId', $level1);
$query = $this->db->get();
// return one row from database.
return $query->row();
}