当前位置: 首页>>代码示例>>PHP>>正文


PHP CActiveRecord::setTable方法代码示例

本文整理汇总了PHP中CActiveRecord::setTable方法的典型用法代码示例。如果您正苦于以下问题:PHP CActiveRecord::setTable方法的具体用法?PHP CActiveRecord::setTable怎么用?PHP CActiveRecord::setTable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CActiveRecord的用法示例。


在下文中一共展示了CActiveRecord::setTable方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: save

 public function save()
 {
     $group = $this->group;
     $roles = array();
     if (array_key_exists("roles", $group)) {
         $roles = $group["roles"];
         unset($group["roles"]);
     }
     $groupObj = new CUserGroup();
     $groupObj->setAttributes($group);
     /**
      * Удаляем старые задачи группы и пользователей
      */
     foreach (CActiveRecordProvider::getWithCondition(TABLE_USER_GROUP_HAS_ROLES, "user_group_id = " . $groupObj->getId())->getItems() as $ar) {
         $ar->remove();
     }
     $groupObj->save();
     /**
      * Создаем новые задачи группы и пользователей
      */
     foreach ($roles as $role => $level) {
         if ($level != 0) {
             $ar = new CActiveRecord(array("id" => null, "user_group_id" => $groupObj->getId(), "task_id" => $role, "task_rights_id" => $level));
             $ar->setTable(TABLE_USER_GROUP_HAS_ROLES);
             $ar->insert();
         }
     }
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:28,代码来源:CUserGroupForm.class.php

示例2: save

 public function save()
 {
     parent::save();
     /**
      * У сотрудников, которых нет приказов по
      * ГАК в году комиссии автоматически устанавливается
      * приказ от комиссии
      */
     if ($this->order_id !== 0) {
         $persons = new CArrayList();
         foreach ($this->members->getItems() as $person) {
             $persons->add($person->getId(), $person);
         }
         if (!is_null($this->manager)) {
             $persons->add($this->manager->getId(), $this->manager);
         }
         foreach ($persons->getItems() as $person) {
             if (is_null($person->getSABOrdersByYear($this->year))) {
                 $ar = new CActiveRecord(array("id" => null, "person_id" => $person->getId(), "year_id" => $this->year->getId(), "order_id" => $this->order_id));
                 $ar->setTable(TABLE_SAB_PERSON_ORDERS);
                 $ar->insert();
             }
         }
     }
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:25,代码来源:CSABCommission.class.php

示例3: save

 public function save()
 {
     $this->grant->save();
     /**
      * Работа с участниками
      */
     $members = array();
     if (array_key_exists("members", $this->_fields)) {
         $members = $this->_fields["members"];
     }
     /**
      * Делаем руководителя тоже участником
      */
     if ($this->grant->manager_id != "0") {
         $members[] = $this->grant->manager_id;
     }
     /**
      * Удаляем старых участников
      */
     foreach (CActiveRecordProvider::getWithCondition(TABLE_GRANT_MEMBERS, "grant_id= " . $this->grant->getId())->getItems() as $ar) {
         $ar->remove();
     }
     /**
      * Добавляем новых
      */
     foreach ($members as $member) {
         $ar = new CActiveRecord(array("id" => null, "grant_id" => $this->grant->getId(), "person_id" => $member));
         $ar->setTable(TABLE_GRANT_MEMBERS);
         $ar->insert();
     }
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:31,代码来源:CGrantForm.class.php

示例4: save

 public function save()
 {
     $commission = $this->commission;
     $members = array();
     if (array_key_exists("members", $commission)) {
         $members = $commission["members"];
         unset($commission["members"]);
     }
     $commObj = new CDiplomPreviewComission();
     $commObj->setAttributes($commission);
     $commObj->save();
     $this->commission = $commObj;
     foreach (CActiveRecordProvider::getWithCondition(TABLE_DIPLOM_PREVIEW_MEMBERS, "comm_id=" . $commObj->getId())->getItems() as $ar) {
         $ar->remove();
     }
     foreach ($members as $m) {
         if ($m !== 0) {
             $ar = new CActiveRecord(array("comm_id" => $commObj->getId(), "kadri_id" => $m, "id" => null));
             $ar->setTable(TABLE_DIPLOM_PREVIEW_MEMBERS);
             $ar->insert();
         }
     }
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:23,代码来源:CDiplomPreviewCommissionForm.class.php

示例5: save

 public function save()
 {
     $personArr = $this->person;
     /**
      * Сохраняем сотрудника
      */
     $this->person->save();
     /**
      * Удаляем старые типы участия на кафедре
      */
     foreach (CActiveRecordProvider::getWithCondition(TABLE_PERSON_BY_TYPES, "kadri_id=" . $this->person->getId())->getItems() as $ar) {
         $ar->remove();
     }
     /**
      * Сохраняем новые типы участия на кафедре
      */
     foreach ($this->_types as $type) {
         if ($type != "" && $type != "0") {
             $ar = new CActiveRecord(array("kadri_id" => $this->person->getId(), "person_type_id" => $type, "id" => null));
             $ar->setTable(TABLE_PERSON_BY_TYPES);
             $ar->insert();
         }
     }
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:24,代码来源:CPersonForm.class.php

示例6: getDistinctWithCondition

 /**
  * Уникальные по заданному ключу и условию записи из таблицы
  *
  * @param $table
  * @param $condition
  * @param $field
  * @return CRecordSet
  */
 public static function getDistinctWithCondition($table, $condition, $field)
 {
     $key = $table . "_" . $condition . "_distinct_" . $field;
     if (!self::getCache()->hasElement($key)) {
         $q = new CQuery();
         $res = new CRecordSet();
         $res->setManualAdd(true);
         $q->select("DISTINCT(" . $field . "), id")->from($table)->condition($condition . " GROUP BY " . $field);
         $r = $q->execute();
         foreach ($r->getItems() as $item) {
             $record = new CActiveRecord($item);
             $record->setTable($table);
             $distinct = self::getById($table, $record->getId());
             $res->add($res->getCount(), $distinct);
         }
         self::getCache()->add($key, $res);
     }
     return self::getCache()->getItem($key);
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:27,代码来源:CActiveRecordProvider.class.php

示例7: updateWithJsonString

 /**
  * Обновление модели на основе данных, пришедших из json-контроллера
  *
  * @param $jsonString
  * @return array
  */
 public function updateWithJsonString($jsonString)
 {
     // данные модели
     $modelData = json_decode($jsonString, true);
     // убираем служебную инфу
     if (array_key_exists("_translation", $modelData)) {
         unset($modelData["_translation"]);
     }
     // попробуем сохранить данные, которые находятся в отношениях
     // многие-ко-многим
     foreach ($this->relations() as $field => $properties) {
         if ($properties["relationPower"] == RELATION_MANY_TO_MANY) {
             if (array_key_exists($field, $modelData)) {
                 $data = $modelData[$field];
                 // уберем их из модели
                 unset($modelData[$field]);
                 // уберем уже имеющиеся данные из связанной таблицы
                 /**
                  * @var CActiveRecord $ar
                  */
                 if (array_key_exists("id", $modelData)) {
                     foreach (CActiveRecordProvider::getWithCondition($properties["joinTable"], trim(CUtils::strLeft($properties["leftCondition"], "=")) . "=" . $modelData["id"])->getItems() as $ar) {
                         $ar->remove();
                     }
                 }
                 // добавим туда новые данные
                 foreach ($data as $value) {
                     $ar = new CActiveRecord(array($properties["rightKey"] => $value["id"], trim(CUtils::strLeft($properties["leftCondition"], "=")) => $modelData["id"], "id" => null));
                     $ar->setTable($properties["joinTable"]);
                     $ar->insert();
                 }
             }
         } elseif ($properties["relationPower"] == RELATION_HAS_MANY) {
             if (array_key_exists($field, $modelData)) {
                 $data = $modelData[$field];
                 // уберем данные из модели
                 unset($modelData[$field]);
                 // если в свойствах отношения указан целевой класс, то
                 // будем обновлять автоматом
                 if (array_key_exists("targetClass", $properties)) {
                     // получим список записей, которые уже есть
                     $targetClass = $properties["targetClass"];
                     /**
                      * @var CActiveModel $targetObj
                      */
                     $targetObj = new $targetClass();
                     $docsToRemove = array();
                     // его может не быть, если запись новая
                     if (array_key_exists("id", $modelData)) {
                         $items = CActiveRecordProvider::getWithCondition($targetObj->getTable(), trim(CUtils::strLeft($properties["storageCondition"], "=")) . "=" . $modelData["id"]);
                         /**
                          * @var CActiveRecord $item
                          */
                         foreach ($items->getItems() as $item) {
                             $docsToRemove[] = $item->getId();
                         }
                     }
                     /**
                      * @var string $item
                      */
                     foreach ($data as $item) {
                         // полученные данные обратно в json, чтобы
                         // можно было все сделать одинаково рекурсивно
                         $childJsonData = json_encode($item);
                         // создадим экземпляр целевого класса
                         /**
                          * @var CActiveModel $targetObj
                          */
                         $targetObj = new $targetClass();
                         $targetObj->updateWithJsonString($childJsonData);
                         $targetObj->save();
                         // уберем из списка добавленную запись
                         if (in_array($targetObj->getId(), $docsToRemove)) {
                             unset($docsToRemove[array_search($targetObj->getId(), $docsToRemove)]);
                         }
                     }
                     // удалим элементы из списка на удаление - мы
                     // их удалили и вместе с другими данными с клиента
                     // они не пришли
                     if (count($docsToRemove) > 0) {
                         CActiveRecordProvider::removeWithCondition($targetObj->getTable(), "id in (" . implode(", ", $docsToRemove) . ")");
                     }
                 }
             }
         }
     }
     // данные обратно в модель
     foreach ($modelData as $key => $value) {
         $this->{$key} = $value;
     }
     return $modelData;
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:98,代码来源:CActiveModel.class.php

示例8: getPaginated

 /**
  * Разбитый на страницы набор данных
  *
  * @return CArrayList
  */
 public function getPaginated()
 {
     /**
      * Разбивка на страницы на случай, если записи добавлялись вручную
      * и на случай, если рекордсет получен из таблицы
      */
     if ($this->_manualAdded) {
         $res = new CArrayList();
         $i = 0;
         $start = ($this->getCurrentPage() - 1) * $this->getPageSize();
         $end = $this->getCurrentPage() * $this->getPageSize();
         foreach ($this->getItems() as $key => $value) {
             if ($i >= $start && $i < $end) {
                 $res->add($key, $value);
             }
             $i++;
         }
         return $res;
     } else {
         $res = new CArrayList();
         $query = $this->getQuery();
         /**
          * Использование глобального поиск и глобальных сортировок
          */
         if ($this->_useGlobalSearch) {
             // глобальный поиск
             $globalFilter = CRequest::getGlobalFilter();
             if ($globalFilter["field"] !== false) {
                 $condition = $query->getCondition();
                 if (is_numeric($globalFilter["value"])) {
                     if ($condition != "") {
                         $condition .= " AND " . $globalFilter["field"] . '=' . $globalFilter["value"];
                     } else {
                         $condition = $globalFilter["field"] . '=' . $globalFilter["value"];
                     }
                 } else {
                     if ($condition != "") {
                         $condition .= " AND " . $globalFilter["field"] . " like '%" . $globalFilter["value"] . "%'";
                     } else {
                         $condition = $globalFilter["field"] . " like '%" . $globalFilter["value"] . "%'";
                     }
                 }
                 $query->condition($condition);
             }
             // глобальные сортировки
             $globalOrder = CRequest::getGlobalOrder();
             if ($globalOrder["field"] !== false) {
                 $query->order($globalOrder["field"] . " " . $globalOrder["direction"]);
             }
         }
         /**
          * Использование глобального ограничения доступа
          */
         if ($this->_isAclControlledSet) {
             $this->updateQueryForACLLimitations();
         }
         if ($this->getPageSize() != PAGINATION_ALL) {
             $start = ($this->getCurrentPage() - 1) * $this->getPageSize();
             $query->limit($start, $this->getPageSize());
         }
         $items = $query->execute();
         foreach ($items->getItems() as $item) {
             $ar = new CActiveRecord($item);
             $ar->setTable($query->getTable());
             $res->add($ar->getId(), $ar);
         }
         return $res;
     }
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:74,代码来源:CRecordSet.class.php

示例9: save

 /**
  * Сохранение данных поручим модели чтобы
  * контроллер не нагружать
  */
 public function save()
 {
     /**
      * Извлечем все данные из текущей модели.
      * Мы будем сохранять их по отдельности
      */
     $user = $this->user;
     $roles = array();
     $groups = array();
     if (array_key_exists("groups", $user)) {
         $groups = $user["groups"];
         unset($user["groups"]);
     }
     if (array_key_exists("roles", $user)) {
         $roles = $user["roles"];
         unset($user["roles"]);
     }
     $userObj = new CUser();
     $userObj->setAttributes($user);
     if ($this->changePassword == 1) {
         if ($this->newPassword !== "") {
             $userObj->password = md5($this->newPassword);
         }
     }
     $userObj->save();
     $this->user = $userObj;
     /**
      * Удаляем старые упоминания о группах, в которых
      * пользователь состоял
      */
     foreach (CActiveRecordProvider::getWithCondition(TABLE_USER_IN_GROUPS, "user_id = " . $userObj->getId())->getItems() as $ar) {
         $ar->remove();
     }
     foreach ($groups as $group) {
         $ar = new CActiveRecord(array("user_id" => $userObj->getId(), "group_id" => $group, "id" => null));
         $ar->setTable(TABLE_USER_IN_GROUPS);
         $ar->insert();
     }
     /**
     * Исключаем из личных прав пользователей те, которые совпадают с правами
     * на задачу
     *
     * 08.11.2014
     * Больше так не делаем - пусть система работает тривиально. Если это
     * личные права, то они до конца личные
     * 
             foreach ($userObj->getGroups()->getItems() as $group) {
        foreach ($group->getRoles()->getItems() as $role) {
            if (array_key_exists($role->getId(), $roles)) {
                if ($role->level == $roles[$role->getId()]) {
                    unset($roles[$role->getId()]);
                }
            }
        }
             }
     */
     /**
      * Удаляем старые и сохраняем отличающиеся
      */
     foreach (CActiveRecordProvider::getWithCondition(TABLE_USER_HAS_ROLES, "user_id = " . $userObj->getId())->getItems() as $ar) {
         $ar->remove();
     }
     /**
      * Сохраняем личные права пользователя
      */
     foreach ($roles as $role => $level) {
         /**
          * Можно индивидуально запрещать доступ к задаче
          */
         // if ($level != 0) {
         $ar = new CActiveRecord(array("id" => null, "user_id" => $userObj->getId(), "task_id" => $role, "task_rights_id" => $level));
         $ar->setTable(TABLE_USER_HAS_ROLES);
         $ar->insert();
         // }
     }
 }
开发者ID:Rustam44,项目名称:ASUPortalPHP,代码行数:80,代码来源:CUserForm.class.php


注:本文中的CActiveRecord::setTable方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。