Example #1
0
 public function checkExistParams($attribute, $params)
 {
     if (!$this->hasErrors()) {
         if (!class_exists($this->leftClass)) {
             $this->addError(Yii::t("models", "Ошибка сохранения связей"), Yii::t("models", "Неверное указанно значение Left Class"));
         }
         if (!$this->hasErrors() && !class_exists($this->rightClass)) {
             $this->addError(Yii::t("models", "Ошибка сохранения связей"), Yii::t("models", "Неверное указанно значение Right Class"));
         }
         if (!$this->hasErrors()) {
             $leftClassName = $this->leftClass;
             $leftModel = $leftClassName::fetch($this->leftId);
             if ($leftModel->id > 0) {
                 $rightClassName = $this->rightClass;
                 $rightModel = $rightClassName::fetch($this->rightId);
                 if ($rightModel->id > 0) {
                     $catRelation = CatRelations::findByAttributes(array("leftId" => $this->leftId, "rightId" => $this->rightId, "leftClass" => $this->leftClass, "rightClass" => $this->rightClass));
                     if (sizeof($catRelation) > 0) {
                         $this->addError(Yii::t("models", "Ошибка сохранения связей"), Yii::t("models", "Запись с указанными параметрами уже зарегистрирована в базе"));
                     }
                 } else {
                     $this->addError(Yii::t("models", "Ошибка сохранения связей"), Yii::t("models", "Неверное указанно значение Right ID"));
                 }
             } else {
                 $this->addError(Yii::t("models", "Ошибка сохранения связей"), Yii::t("models", "Неверное указанно значение Left ID"));
             }
         }
     }
 }
Example #2
0
 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;
 }
Example #3
0
 static function saveRelation(CCModel $model, $values)
 {
     foreach ($model->relations() as $value) {
         if ($value[0] == "CManyManyRelation") {
             $leftClass = $value[1];
             $rightClass = SiteHelper::getCamelCase($model->tableName());
             CatRelations::sql("DELETE FROM cat_relations WHERE ( leftClass='" . $leftClass . "' AND rightClass='" . $rightClass . "') OR ( leftClass='" . $rightClass . "' AND rightClass='" . $leftClass . "') ");
             foreach ($values as $value2) {
                 $new = new CatRelations();
                 $new->leftClass = $leftClass;
                 $new->rightClass = $rightClass;
                 $new->leftId = $value2;
                 $new->rightId = $model->id;
                 $new->save();
                 $new = new CatRelations();
                 $new->leftClass = $rightClass;
                 $new->rightClass = $leftClass;
                 $new->leftId = $model->id;
                 $new->rightId = $value2;
                 $new->save();
             }
         }
     }
 }
Example #4
0
    <?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];