この開発にcodeigniterを使用していますか?以下の回答は、codeigniterのWebアプリケーションフレームワーク に基づいています。 http://localhost/cms/fruits/tropical/bananas/
:だからここに行く、
問題は、私は へページ[root]->fruits->tropical->bananas
のみ、このURLからアクセス可能で欲しいということです。
したがって、機能名フルーツと2つのパラメータを持つコントローラでコントローラを作成しますか?例えば
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テーブルは、その親を指す親フィールド を持っているということです。質問は:どのようにurlアドレス を解析し、可能な限り少ないクエリ/効率でDBから行を選択するのですか?
Table cms:
Id
Slug
ParentId
Table cms_parent:
Id
のは、上に示した2例の表で説明してみましょう、CMSテーブルとCMS親テーブル。あなたは、あなたの質問が何を望んでいるのか、または質問結果が返ってくるのかについてあなたの質問に正確には言及していません。だから私の推測はあなたの質問の記述に基づいています。つまり、共通のキーを使って2つのテーブルを結合してから条件を適用します。
// 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();
}
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ –
http://stackoverflow.com/questions/4048151/what-are-the-options-for-storing-hierarchical-データベース内のデータ – frail