Наследование в кохане - PullRequest
3 голосов
/ 02 июня 2010

Я недавно начал использовать коану, и я знаю, что наследование находится в стадии младенчества в данный момент. Обходной путь - использование аннотации $ _has_one для модели дочернего класса. В случае, если у меня есть «страница» в качестве родителя «статьи». У меня есть что-то вроде

protected $_has_one = array('mypage'=>array('model'=>'page', 'foreign_key'=>'id'));

В моем контроллере у меня есть действие, которое запрашивает базу данных. В этом запросе я пытаюсь получить доступ к полям из родительского элемента "article", который является "страницей".

    $n->articles=ORM::factory('article')->where('expires','=',0)
        ->where('articledate','<',date('y-m-d'))
        ->where('expirydate','>',date('y-m-d'))
        ->where('mypage->status','=','PUBLISHED')
        ->order_by('articledate','desc')
        ->find_all();

Столбец статуса находится в таблице страниц, и мой запрос генерирует ошибку с эффектом «не удается найти статус», очевидно, потому что он принадлежит родителю.

Есть идеи?

1 Ответ

2 голосов
/ 02 июня 2010

Возможно использовать с , например:

    $n->articles=ORM::factory('article')->with('mypage')
    ->where('expires','=',0)
    ->where('articledate','<',date('y-m-d'))
    ->where('expirydate','>',date('y-m-d'))
    ->where('status','=','PUBLISHED')

, который создает соединение между двумя таблицами один к одному.

...