Example #1
0
 /**
  * создает пользователя на основании данных полей, указанных в $data.
  * возвращает id созданного пользователя
  */
 public function addUser(array $data)
 {
     $requiredCol = $this->dbStruct['require'];
     $mustBeUnic = $this->dbStruct['unic'];
     foreach ($requiredCol as $column) {
         if (!array_key_exists($column, $data) || !mb_strlen($data[$column])) {
             // не найдено обязательное поле или оно пустое
             throw new Exception("[" . __CLASS__ . "] Не указано обязательное поле " . $column . "!");
         }
     }
     // проверяем уникальность данных, если задано
     if (count($mustBeUnic)) {
         $filter = array();
         foreach ($mustBeUnic as $column) {
             if (array_key_exists($column, $data) && mb_strlen($data[$column])) {
                 $filter[$column] = $data[$column];
             }
         }
         if (count($filter) && count($this->selectUsers($filter, true)->toArray())) {
             throw new Exception("[" . __CLASS__ . "] Пользователь с такими данными уже существует!");
         }
     }
     $sql = new RequestBuilder($this->dbInctance);
     $sql->insert('^table', array('^table' => $this->dbStruct['table']))->values($data)->query();
     return new AddUser(array('id' => $sql->lastInsertId()));
 }