2010-06-02 5 views
3

J'ai récemment commencé à utiliser Kohana et je sais que l'hérédité en est à ses débuts. Le travail autour utilise une annotation $ _has_one sur le modèle de classe enfant. Dans le cas, j'ai "page" comme parent de "article". J'ai quelque chose comme,Héritage dans kohana

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

Dans mon contrôleur, je une action qui interroge la base de données. Dans cette requête, j'essaie d'accéder aux champs du parent de "article" qui est la "page".

$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(); 

La colonne d'état se trouve dans le tableau de la page et ma requête génère une erreur à l'effet de « ne peut pas trouver le statut », clairement parce qu'il appartient à la société mère.

Des idées?

Répondre

2

Il peut être possible d'utiliser avec comme ceci:

$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') 

qui crée une jointure entre deux tables une à une.