我正在尝试使用PHP Active Record创建一个页面树,我似乎无法让它设置正常工作。
以下是我用于Page类的代码:
class Page extends ActiveRecord\Model {
static $belongs_to = array(array('parent_page', 'class_name' => 'Page'));
static $has_many = array(
array('pages')
);
public static function get_top_level_pages() {
return Page::all(array('conditions' => 'parent_page_id = 0'));
}
}
我的名为Pages的数据库表中包含以下列:
id
parent_page_id
type
title
meta_title
content
有谁知道我在这里做错了什么?
答案 0 :(得分:0)
我不确定这是否是将类与自身联系起来的“最正确”方法,但它似乎对我有用。
首先,我将表中的parent_page_id更改为page_id,并使用以下类将该类放在一起:
class Page extends ActiveRecord\Model {
static $has_many = array(
array('pages')
);
static $belongs_to = array(array('page', 'class_name' => 'Page'));
public static function get_top_level_pages() {
return Page::all(array('conditions' => 'page_id = 0'));
}
public function get_parent() {
return $this->page;
}
public function get_children() {
return $this->pages;
}
}
我创建了get_parent()和get_children()函数,因为 - > page和 - >页面对我来说没有意义,而且这些函数有助于清除它。
我愿意接受更好或更“正确”的解决方案。
JP
答案 1 :(得分:0)
我也在努力解决这个问题(烦人的问题)。
您错过了foreign_key
(这只会指向您的列名称)。
我已修改您的代码并将其粘贴在下方:
class Page extends ActiveRecord\Model {
//make sure that you define the 'foreign_key'
static $belongs_to = array(
array('parent_page', 'class_name' => 'Page', 'foreign_key' => 'parent_page_id')
);
static $has_many = array(
array('pages')
);
public static function get_top_level_pages() {
return Page::all(array('conditions' => 'parent_page_id = 0'));
}
}
$parent_page = Page::find(20)->parent_page; // this works fine