 
Значения данных, задаваемых по умолчанию
Иногда бывает необходимо, чтобы при создании новой записи, какое-то поле приобретало определенное значение по умолчанию.
Значение по умолчанию – через тип данного
Помня о том, что тип данного, объявленного в дескрипторе, есть ничто иное, как тип столбца таблицы MySQL, значения по умолчанию можно задать следующим образом:
.tdd
$types[1] = 'int(6) default 0';
$types[2] = "varchar(100) default ''";
Кроме задания значения по умолчанию, рекомендуем оптимизировать столбцы базы данных.
Во-первых, постарайтесь везде, где нет необходимости в значении NULL, прописать это явно:
$types[2] = "varchar(100) not null default ''";
Во-вторых, если в числовых данных не используются отрицательные величины, то пишите:
$types[1] = 'int(6) unsigned not null default 0';
Это уменьшит объем памяти, занимаемый числом сразу в два раза.
Значение по умолчанию – через массив $defaults
Предыдущий способ годится не всегда. Например, тем способом вы можете задать по умолчанию фиксированную дату:
$types[3] = "date default '2009-12-31'";
Но задать таким же образом текущую дату вы уже не сможете.
Более универсальным способом задания значения по умолчанию, в том числе переменного, является применение массива $defaults.
С помощью массива $defaults текущую дату можно поставить так:
$types[3] = 'date';
$defaults[3] = date('Y-m-d');
А самый первый пример этой статьи можно переписать так:
.tdd
$types[1] = 'int(6)';
$types[2] = 'varchar(100)';
$defaults[1] = 0;
$defaults[2] = '';
Значения по умолчанию вы можете получать путем вычислений и любыми другими доступными в PHP способами.
Чаще всего используются глобальные переменные, так как обычные переменные шаблона в дескрипторе не доступны.
В следующем примере в поле 4 будет записываться идентификатор пользователя, создавшего запись:
.tdd
$types[4] = 'int(6) unsigned not null default 0';
$defaults[4] = $_SESSION['userId'];
Для сохранения в каком-либо поле идентификатора пользователя существует специальный параметр дескриптора: $params['userIdField']
См. также
|