$this->get('blabla');
public function getSQL(){ $sql = "SELECT {$select} FROM cms_{$this->table} i ";
Работайте напрямую по примеру из гета:
$result = $this->db->query($sql); // если запрос ничего не вернул, возвращаем ложь if (!$this->db->numRows($result)){ return false; } // перебираем все вернувшиеся строки while($item = $this->db->fetchAssoc($result)){
Добрый ночи. Тему создать не могу нет прав. Можете подсказать как сделать запрос в базу без прфекса
public function addАccounts($registration){ $registration['user_id'] = cmsUser::get('id'); return $this->insert('accounts', $registration); }
Rico, прямым запросом, как например здесь instantcms.ru/forum/zapros-mysql-vyvod-dublei-na-stranice.html#post-352284
На мой взгляд, лучше как тут github.com/instantsoft/icms2/blob/0f6d5db492690304edae5379ddaa691eedfc6f94/system/controllers/admin/forms/form_ctypes_field.php#L276
Т.е. сперва
$this->setTablePrefix('');
чтобы убрать префикс в запросах. Потом ваш запрос.
$this->insert('accounts', $registration);
А затем
$this->setTablePrefix(cmsModel::DEFAULT_TABLE_PREFIX);
Чтобы остальные запросы дальше шли с префиксом.
Zau4man, код
$this->setTablePrefix('');
удаляет «con_», а не «cms_» и позволяет использовать профили пользователей и группы (сообщества) как один из типов контента.
Loadырь, тогда так
$old_prefix = $this->db->prefix; $this->db->prefix = "";
а вернуть обратно через
$this->db->prefix = $old_prefix;
И не надо будет пилить запрос вручную...
Тогда получается так
public function addАccounts($registration){ $registration['user_id'] = cmsUser::get('id'); $this->db->setDbPrefix(''); $insert = $this->insert('accounts', $registration); $this->db->setDbPrefix(cmsConfig::get('db_prefix')); return $insert; }
Спасибо большое за помощь. Все получилось.
Но теперь не могу валидацию формы сделать
'type' => 'fieldset', 'title' => 'Регистрация игрового аккаунта', 'title' => 'Логин', ), )), 'title' => 'Пароль', 'is_password' => true, 'min_length'=> 6, 'max_length'=> 36 ), ) )) ) )
не подскажете как тут убрать префикс таблицы ?
Но теперь не могу валидацию формы сделать
Вам нужно в таком случае объявить метод в классе формы, начинающийся на validate и там сделать валидацию как примерно здесь. Валидация полей ищет методы вот так.
public function validate_unique($table_name, $field_name, $value){ $db = cmsDatabase::getInstance(); $db->setDbPrefix(''); $result = $db->isFieldUnique($table_name, $field_name, $value); $db->setDbPrefix(cmsConfig::get('db_prefix')); if (!$result) { return ERR_VALIDATE_UNIQUE; } return true; }