serge.kam
(Serge Kam2005)
February 15, 2015, 2:27pm
1
Добрый день.
Есть три таблички:
Оборудование:
tbl_equipment (eq_id, eq_title, eq_description, eq_amt)
Офис:
tbl_office (of_id, of_title, of_num, of_description)
Таблица связей:
tbl_eq_of (of_id, eq_id, status)
В Модели Office прописана реляция:
'equipment' => array(self::MANY_MANY, 'Equipment', '{{eq_of}}(of_id, eq_id)'),
Все прекрасно работает, когда просто нужен список техники из view Офиса:
$items = $model->equipment;
foreach($items as $item) {
echo $item->eq_title . '<br />';
}
Но нужно этот список разбить на несколько списков по полю status [integer] с заголовками Статус 1, Статус 2… Статусы и количество статусов нам неизвестно.
Думаю нужно обернуть foreach в еще один foreach, но что в нем прописать??
Jadson
(Yaroslav Molchan)
February 16, 2015, 10:33am
2
На сколько я помню для MANY_MANY так не получиться сделать, переделай под HAS_MANY и используй статус
serge.kam
(Serge Kam2005)
February 16, 2015, 2:42pm
3
Спасибо за наводку, нашел такой путь:
Model Relation:
'eqRell' => array(self::HAS_MANY, 'Equipment', 'Equipmentoffice'),
'eqHas' => array(self::HAS_MANY, 'Equipment', 'of_id', 'through' => 'eqRell'),
View:
$itemers = Equipment::model()->with('eqRell','eqHas')->findByPk('eq_id');
foreach($itemers as $itemer) {
echo $itemer->status . '<br />';
}
Но работать не хочет…
Пишет:
Отношение "eqRell" не было определено в active record классе "Equipment".
Jadson
(Yaroslav Molchan)
February 17, 2015, 7:40am
4
Связь не правильно указана, если нужно с Office вытянуть tbl_equipment то я бы для таблицы tbl_eq_of создал модель
в ней добавил PK и уже с неё вытягивал бы, по другому вытянуть реляцию в данный момент не знаю как ещё