Kohana-v3 ORM родительские отношения - PullRequest
0 голосов
/ 23 мая 2010

Я только начал с версии 3 Kohana Framework.Я немного поработал с $ _has_many и т. Д.

Теперь у меня есть таблицы страниц.Первичный ключ - это pageID.В таблице есть столбец с именем parentPageID.Теперь я хочу создать модель ORM, которая при приеме, подобном этому, $page->parent->find() возвращает страницу, указанную parentPageID.

У меня уже есть следующее:

// Settings
protected $_table_name  = 'pages';
protected $_primary_key = 'pageID';
protected $_has_one = array(
    'parent' => array(
        'model'     => 'page',
        'foreign_key'   => 'parentPageID',
    ),
);

Но это не работает, он просто возвращает первую страницу из таблицы.Последний запрос говорит:

SELECT `pages`.* FROM `pages` ORDER BY `pages`.`pageID` ASC LIMIT 1

Кто-нибудь знает, как решить эту проблему?

Я знаю, что это может: $parent = $page->parent->find($page->parentPageID);, но это должно быть и может быть чище (я думаю).

Решено , см. Мой ответ ниже.

1 Ответ

4 голосов
/ 23 мая 2010

Я решил это сам. Мне нужно было поменять вещи. Я объясняю:

Вы можете сделать следующее предложение: страница принадлежит его родительской странице.

Итак, когда я так думал, я знаю, что я сделал не так.

Нет, у меня есть это (что прекрасно работает):

protected $_belongs_to = array
(
    'parent' => array
    (
        'model' => 'page',
        'foreign_key' => 'parentPageID'
    )
);
protected $_has_many = array
(
    'childs' => array
    (
        'model' => 'page',
        'foreign_key' => 'parentPageID',
    )
);

Я могу использовать это так:

$havesParent = $page->parent->loaded();
$childs = $page->childs->find_all()->as_array();
// ...

@ Stackoverflow Извините, я заполнил вашу базу данных вопросом, на который я сам ответил.

...