0

我刚开始使用 Kohana 框架的第 3 版。我在 $_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);但它必须并且可以更清洁(我认为)。

解决了,看我下面的回答。

4

1 回答 1

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对不起,我用我自己回答的问题填写了您的数据库。

于 2010-05-23T15:15:35.830 回答