CF9 ORM Заполнение сущности объектом - PullRequest
2 голосов
/ 25 мая 2011

Я использую Model-Glue / Coldspring для нового приложения, и я подумал, что добавлю CF9 ORM в смесь.

Единственная проблема, с которой я сейчас сталкиваюсь, - это заполнение объекта объектом. Более или менее приведенный ниже код подтверждает, что может существовать только одно имя пользователя. Существует некоторая другая логика, которая не отображается.

Моей первой мыслью было использовать что-то вроде этого:

var entity = entityload('UserAccount' ,{UserName=arguments.UserAccount.getUserName()},"true")

entity = arguments.UserAccount;

Как бы то ни было, это не работает так, как я ожидал. Можно ли даже заполнить сущность объектом или мне нужно использовать сеттеры?

Ответы [ 2 ]

4 голосов
/ 25 мая 2011

Не уверен, что это то, что вы ищете.Если у вас есть ...

component persistent="true" entityName="Foo" 
{
  property a;
  property b;
}

Вы можете передать структуру во 2-м параметре для инициализации сущности (я полагаю, добавлен в CF9.0.1)

EntityNew("Foo", {a="1",b="2"});

Для заполнения Fooдругой объект, вы можете использовать шаблон Memento и реализовать для вашего объекта функцию GetMemento(), которая возвращает структуру всех его свойств.

EntityNew("Foo", bar.getMemento());

Однако CF НЕ вызывает ваши пользовательские установщики!Если вы хотите установить их с помощью установщиков, вы можете добавить вызовы к установщикам в конструкторе init() или использовать выбранную среду MVC для заполнения компонента.В Model-Glue это makeEventBean().

Обновление: Или ... Вот хак ...

EntityNew("Foo", DeserializeJSON(SerializeJSON(valueObject)));

Используйте это на свой страх и риск.JSON может делать странные вещи с вашими числами и строками 'yes', 'no', 'true', 'false'.:)

0 голосов
/ 26 мая 2011

Возможно ли даже заполнить сущность объектом или мне нужно использовать сеттеры?

Если вы имеете в виду "Можно ли создать загрузить объект ORM из экземпляра этого постоянного CFC, который уже существует и свойства которого установлены? "его имя пользователя было установлено перед передачей (что, похоже, имеет место в вашей ситуации).

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

...