[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Связи Jelly ORM
T1grOK
Не могу понять. Использую ORM JELLY. Есть вот такая модель.

class Model_Menu_Item extends Jelly_Model {

public static function initialize(Jelly_Meta $meta)
{
$meta->table('menu_items')
->
fields(array(
'id' => new Jelly_Field_Primary,
'parent_id' => new Jelly_Field_Integer,
'url' => new Jelly_Field_String(array(
'label' => 'Url',
'rules' => array(
'not_empty' => NULL
)
)),

'title' => new Jelly_Field_String(array(
'label' => 'Название',
'rules' => array(
'not_empty' => NULL,
)
)),

'classes' => new Jelly_Field_String(array(
'label' => 'Класс'
)),
'subcategories' => new Jelly_Field_HasMany(array('model' => 'menu_item', 'foreign' => 'menu_items.parent_id'))
));

}
}


То есть у меня есть таблица в которой одна запись подчинена другой(родитель-потомок subcategories )
Получаю все нужные записи.
$items = Jelly::query('menu_item')->where('parent_id', '=', 0)->as_object(TRUE)->select();


Но при обращении к связям получаю массив

$items->subcategories //array


Хотя нужно получить точно такую Jelly_Collection как и items, чтобы можно было получить потомков-потомков, то есть
foreach($items as $item)
foreach($item->subcategories as $sub)
{
$sub->subcategories;
}
}

Никак не могу понять как это сделать. В стандартной ORM подобные конструкции спокойно работают.



Спустя 47 минут, 40 секунд (25.05.2012 - 09:29) Invis1ble написал(а):
может что-то вроде
foreach($item->subcategories->as_object(TRUE) as $sub)
но это лишь предположение, с Jelly не работал

Спустя 6 минут, 22 секунды (25.05.2012 - 09:35) T1grOK написал(а):
Нет $item->subcategories в чистом виде массив а не класс с итератором.

Спустя 28 минут, 32 секунды (25.05.2012 - 10:04) T1grOK написал(а):
Чувствую придется пользоваться стандартным ORM хотя Jelly куда функциональней и продуманей.

Спустя 3 часа, 35 минут, 54 секунды (25.05.2012 - 13:40) T1grOK написал(а):
Почитал доку, смог решить таким образом
$items = Jelly::query('menu_item')->where('parent_id', '=', 0)->as_object(TRUE)->select();

foreach($items as $item)
$collection = new Jelly_Collection($item->subcategories, 'Model_Menu_Item');
foreach($collection as $c)
{
echo $c->subcategories;
}
}


_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.