2010-05-23 47 views
0

我剛從Kohana框架的第3版開始。 我曾與$ _has_many等Kohana-v3 ORM父母關係

現在我有表頁面。主鍵是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);但它必須是和可以更清潔(我認爲)。

已解決,請參閱下面的答案。

回答

4

我解決了我的自我。我需要交換事情。我解釋一下:

你可以這樣寫一個句子:一個頁面屬於他的父頁面。

所以,當我這樣想時,我知道我做錯了什麼。

人無我有這個(什麼完美的作品):

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 對不起,我有我回答我自己一個問題充滿了你的數據庫。