Окт 29

Удобный инструмент для работы с БД в CodeIgniter

Рубрики: Новости  Количество просмотров: 805

Некоторые пользуются чистыми 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

Загрузок: 131 | Размер: 1.2 KiB

——-
Крупы гречка, пшенка, оптом
Просто труба пвх
Отстойные прически одесса

Другие статьи автора

Комментарии

  1. Цитировать MAX

    Да, интересно. Главное теперь я знаю твой пароль. :)

  2. Цитировать plandem

    очень похож на очень «недоделанный» ActiveRecord :) )) по-крайней мере тот, что в Yii.

  3. Цитировать Тормоз

    Надо же, а почему я раньше ничего не знал про твой блог? Много всяких клёвых техноманьячных штучек пишешь, это очень здорово.

    По теме заметки такой вопрос: можешь порекомендовать новичку, с чего начать изучение работы с БД? Чтобы потратить меньше времени и при этом не делать глупых ошибок.

  4. Цитировать Тормоз

    Ой, подписаться забыл.

  5. Цитировать Samborsky

    По теме заметки такой вопрос: можешь порекомендовать новичку, с чего начать изучение работы с БД? Чтобы потратить меньше времени и при этом не делать глупых ошибок.

    Сперва понять зачем они нужны, чем лучше и удобнее обычного велосипеда с хранением данных в файлах, затем изучить синтаксис запросов и научиться их строить.

    Когда я впервые узнал о БД (2003-й помоему), тогда не было хорошей документации и литературы сейчас в этом плане легче. Есть кстати книга о mysql автор Поль Дюбуа, я ее очень давно купил она мне помогла.

Добавить комментарий