/** * создает пользователя на основании данных полей, указанных в $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())); }