Kohana-v3 ORM üst ilişkisi

1 Cevap php

I just started with the version 3 of the Kohana Framework. I have worked a little with the $_has_many etc.

Şimdi tablo sayfaları var. Birincil anahtar pageID olduğunu. Tablo parentPageID adında bir sütun vardır. Şimdi ben böyle accesed zaman, $page->parent->find() parentPageID tarafından tanımlanan sayfayı döndüren bir ORM modeli yapmak istiyorum.

Zaten şu var:

// Settings
protected $_table_name  = 'pages';
protected $_primary_key = 'pageID';
protected $_has_one = array(
    'parent' => array(
        'model'     => 'page',
        'foreign_key'   => 'parentPageID',
    ),
);

Ama bu sadece tablodan ilk sayfasını verir, çalışmaz. Son sorgu, bu diyor ki:

SELECT `pages`.* FROM `pages` ORDER BY `pages`.`pageID` ASC LIMIT 1

Biri bu çözmek için nasıl biliyor mu?

$parent = $page->parent->find($page->parentPageID); ama olmalı ve (bence) temiz olabilir: Bunu biliyorum.

Solved, aşağıda benim cevaba bakınız.

1 Cevap

Ben bunu kendime çözüldü. Ben şeyleri takas gerekiyordu. Ben açıklamak:

Bir sayfa onun ana sayfa aittir: Eğer böyle bir cümle yapabilirsiniz.

Ben böyle düşündüm Yani, ben yanlış yaptım biliyorum.

Hayır (ne mükemmel çalışıyor) bu var:

protected $_belongs_to = array
(
    'parent' => array
    (
        'model' => 'page',
        'foreign_key' => 'parentPageID'
    )
);
protected $_has_many = array
(
    'childs' => array
    (
        'model' => 'page',
        'foreign_key' => 'parentPageID',
    )
);

Ben bu gibi kullanabilirsiniz:

$havesParent = $page->parent->loaded();
$childs = $page->childs->find_all()->as_array();
// ...

@Stackoverflow Sorry I filled your database with a question I answered my self.