Удобный инструмент для работы с БД в CodeIgniter
Некоторые пользуются чистыми SQL запросами, кто-то обычным классом Active Record из CodeIgniter, а более продвинутые подключают ORM. Я же для повседневной работы с базами данных уже давно использую свой класс-обертку. Этот класс в основном предназначен для быстрой работы с одной строкой из таблицы.
Начну с простых примеров
Загружаем все поля таблицы users где ID = 800
$user = new Object('users');
$user->id = 800;
if( $user->get() ){
// Данные юзера с ID=800 загружены
// Все поля таблицы users находятся тут - $user->data
print_r( $user->data );
}
else{
// Юзер с таким ID не найден
}
Удаляем юзера с ID = 800
$user = new Object('users');
$user->id = 800;
$user->delete();
Вставляем новую запись
$user = new Object('users');
if( $user->insert(array(
'login' => 'jeka',
'wmid' => '11111111111111'
))){
// Новый юзер вставлен, его ID тут: $user->id
echo $user->id;
}
Обновляем юзера с ID = 800
$user = new Object('users');
$user->id = 800;
$user->update(array(
'email' => 'samborskyv@gmail.com',
'login' => 'jeka',
'password' => md5('хуй')
));
Поиск юзера по мылу. Как вы понимаете можно уточнить условия поиска, задав к примерно пароли и логин. Если будет найдено несколько строк, будет выдана все равно первая найденая, т.к. стоит LIMIT 1
$user = new Object('users');
if( $user->find(array(
'email' => 'samborskyv@gmail.com'
)) ){
// Юзер найден а данные уже загружены в $user->data
}
Как видите из примеров, у всех таблиц, должно присутствовать обязательное поле ID, как называются остальные поля – классу все равно. Все данные хранятся в массиве $this->data в таком формате
array( 'Название столбца 1' => 'Значение 1', 'Название столбца 2' => 'Значение 2', 'Название столбца 3' => 'Значение 3', 'Название столбца 4' => 'Значение 4' )
Получился по моему очень удобный и продуктивный класс, который существенно сокращает время разработки, когда надо что-то быстро получить из БД, записать, обновить. Если же нужно делать какие-то сложные выборки, то, конечно мой класс вам не помощник. Повторюсь – его предназначение – работа с единичными строками в таблице.
Еще у моего класса есть интересная особенность. Его можно наследовать. В примерах я показывал работу с таблицей users, а ниже прототип класса users который наследует Object. В нем уже появились какие-то специфические функции, но работа с БД, происходит все равно на том же удобном и простом уровне. Так же можно создать класс post, category, а там уже и до ядра CMS не далеко =)
class User extends Object{
function __construct(){
$this->set_table('users');
}
function is_login(){
// Проверка залогинености
}
function logout(){
// Удаляем кукисы
}
}
object.php.zip
——-
Крупы гречка, пшенка, оптом
Просто труба пвх
Отстойные прически одесса


Да, интересно. Главное теперь я знаю твой пароль.
очень похож на очень «недоделанный» ActiveRecord
)) по-крайней мере тот, что в Yii.
Надо же, а почему я раньше ничего не знал про твой блог? Много всяких клёвых техноманьячных штучек пишешь, это очень здорово.
По теме заметки такой вопрос: можешь порекомендовать новичку, с чего начать изучение работы с БД? Чтобы потратить меньше времени и при этом не делать глупых ошибок.
Ой, подписаться забыл.
Сперва понять зачем они нужны, чем лучше и удобнее обычного велосипеда с хранением данных в файлах, затем изучить синтаксис запросов и научиться их строить.
Когда я впервые узнал о БД (2003-й помоему), тогда не было хорошей документации и литературы сейчас в этом плане легче. Есть кстати книга о mysql автор Поль Дюбуа, я ее очень давно купил она мне помогла.
Спасибо.