2010-08-16 3 views
1

Как настроить динамические значения по умолчанию для объектов OR9 CF9?Динамические значения по умолчанию в CF9 ORM

Например, я знаю, что могу установить свойство по умолчанию, как это:

property name="isActive" default="1"; 

Но что, если вы хотите иметь динамически генерируемый по умолчанию, например, дату или UUID?

property name="uuid" default="#createUUID()#"; 

... выдает сообщение об ошибке - так какой же обходной путь для этого?

ответ

1

При создании объекта Entity вызывается объект-конструктор. Это отличное место для запуска «установочного» кода.

User.cfc

component persistent="true" 
{ 
    property name="id" fieldtype="id" generator="native"; 
    property name="secretKey"; 

    public User function init() { 
    if (isNull(variables.secretKey)) 
     setSecretKey(createdUUID()); 

    return this; 
    } 
} 
+1

Это отлично работает для новых объектов, но перезаписывается тем, что загружено из базы данных (даже если это пустое значение). Однако, поскольку я создаю это приложение с нуля, без устаревших данных, я могу быть уверен, что каждая запись в базе данных пользователей будет создана с этим значением по умолчанию. (В коде выше, функция инициализации() должен «вернуть это;». Добавлено к концу) Спасибо, Себ – sebduggan

+0

Если вы хотите, чтобы запустить этот код для нового объекта вы всегда можете проверить id объекта if (isNull (getId()) {} –

+0

альтернативой было бы присвоить uuid @ preInsert – Henry

0

Вы пытались перегрузить приемник?

public string function getUUID() {if(variables.UUID EQ ""){ return createUUID(); } else { return variables.firstName; }; } 

Я не могу проверить это, откуда я нахожусь, но я бы попробовал.

+0

Дэн, я думаю, что ему нужно, чтобы это было по умолчанию и не всегда возвращают новый UUID. Что делать, если UUID уже сохраняется в базе данных? –

Смежные вопросы