public static function getRelationLeftItems(CCModel $model, $classRelation) { $leftClass = get_class($model); $res = CatRelations::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("leftClass=:leftClass AND rightClass=:rightClass AND leftId=:id")->setParams(array(":leftClass" => $leftClass, ":rightClass" => $classRelation, ":id" => $model->id))->setLimit(-1)->setCache(0)); $list = []; foreach ($res as $items) { $list[] = $items->rightId; } return $list; }
<?php foreach ($form->relations() as $relation) { ?> <?php if ($relation[0] == CCModel::HAS_MANY || $relation[0] == CCModel::MANY_MANY) { // Связь многие ко многим или многоие к одному ?> <h3><?php echo $relation[1]; ?> </h3> <div class="listItems"> <?php // Собираем ID значание из связанной таблицы в масив чтобы потом проверять м т $listValue = array(); foreach (CatRelations::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("leftId=:leftId AND leftClass=:leftClass AND rightClass=:rightClass")->setParams(array(":leftId" => $form->id, ":leftClass" => SiteHelper::getCamelCase($form->tableName()), ":rightClass" => $relation[1]))->setCache(0)) as $itemValue) { $listValue[] = $itemValue->rightId; } $relationTable = $relation[1]; if (!property_exists($relationTable, "owner")) { $listItems = $relationTable::fetchAll(DBQueryParamsClass::CreateParams()->setOrderBy("name")->setLimit(-1)->setCache(0)); } else { $listItems = $relationTable::fetchAll(DBQueryParamsClass::CreateParams()->setConditions("owner=0")->setOrderBy("name")->setLimit(-1)->setCache(0)); } foreach ($listItems as $relationItem) { ?> <div><input type="checkbox" <?php echo in_array($relationItem->id, $listValue) ? "checked=\"checked\"" : ""; ?> name="<?php echo SiteHelper::getCamelCase($form->tableName()) . "[" . $relation[1];