Phpxcore:php4:framework:classes:dbentity class

Материал из phpXCoreWiki.

Перейти к: навигация, поиск

Back

[править] DBEntity.class.php

[править] Основы

Данный класс предназначен для упрощения работы с БД. Для своей работы требует компонент XDatabase.

  • create() - создание сущности
  • update() - обновление сущности
  • delete() - удаление сущности
  • validate() - валидация сущности, метод вызывается при create, set, update
  • get() - получения сущности по уникальному ID
  • getByFields(array $fields = null) - получение сущности по нескольким полям (если данному условию соответствует более 1-ой записи в БД вернётся false)
  • getByWhere(string $aWhere) - получение сущности по условию
  • getArray() - возвращает ассоциативный массив

Имена всех приватных полей (для тех кот. не надо синхронизировать с БД) должны начинаться со знака подчёркивания (см. пример).

Пример работы: Создаём класс наследуемый от DBEntity (каждая переменная является соответствующим полем в таблице):

/*
 id - int(11)
 message - text
 user_id - int(11)
 date_create - datetime
 date_update - datetime
*/
class Discussion extends DBEntity 
{
	var $id;
	var $message;
	var $user_id;
	var $date_create;
	var $date_update;
 
         var $__private_var1;
         var $__private_var2;
	/*
          инициализация таким образом или используя конструктор
          используя такой метод не следует обьявлять конструктор
        */
         var $__table = "message";
         var $__uid = "id";
 
	/
	 * Constructor 
	 *
	 * @access  public
	 */
	function Discussion($aID = null) 
	{
		 альтернативный способ инициализации
		$this->init("message", "id");
		$this->get($aID);
	}
 
	/
	 * validate
	 */
	function validate() 
	{
		$flag = true;
		if (empty($this->user_id) {
			$this->_setError('user_id', 'Please set user ID');		
		}
 
		if (empty($this->message) {
			$this->_setError('message', 'Please fill message');		
		}
 
 
		return $flag;
	}
 
 
}

[править] Пример использования:

Создание сущности:

$DM = new Discussion();
$DM->dis_id		= $dis_id;
$DM->user_id		= $user_id;
$DM->message		= htmlentities($message);
$DM->date_create	         = date("Y-m-d H:i:s");
$DM->__private_var1	= "Any value, this var is will not insert to DB";
$DM->create();
</code>
Редактирование сущности:
<source lang='php'>
 вариант 1
$DM = new Discussion();
if ($DM->get($id)) {
	$DM->message	= htmlentities($message);
	$DM->date_update	= gmdate("Y-m-d H:i:s");
	if (!$DM->update()) {
		$error = "Internal Error";
	}
 
} else {
	$error = "Entity is not exist";
}
 вариант 2
if ($DM->get($data['id'])) {
     if ($DM->set($data)) {                
        if ($DM->create()) {
            Output::setMessage('Record was updated');
        } else {
            Output::setError('Internal error. Please try again');
        }                
    } else {
        $this->output->document->addError($DM->getValidateErrors());
    }
} else {
    $error = "Entity is not exist";
}

Удаление:

$DM = new Discussion();
if ($DM->get($id)) {
	if (!$DM->delete()) {
		$error = "Internal Error";
	}
} else {
	$error = "Entity is not exist";
}
Личные инструменты
123