0

Kohana Framework のバージョン 3 から始めたところです。$_has_many などで少し作業しました。

これでテーブルページができました。主キーは pageID です。テーブルには、parentPageID という列があります。$page->parent->find()ここで、このようにアクセスすると、parentPageIDで識別されるページを返すORM モデルを作成したいと考えています。

私はすでに次のものを持っています:

// 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 に答える