Now let's use the power of ORM and CommandBox to scaffold everything for you :). The help for this command is here:
coldbox create orm-crud helpIt even creates all the integration tests for you.
Let's use CommandBox to build it:
coldbox create orm-entity entityName=contacts primaryKey=contactID properties=firstName,lastName,email --openThen spice it up with the validation constraints
/**
* A cool Contact entity
*/
component persistent="true" table="contacts"{
// Primary Key
property name="contactID" fieldtype="id" column="contactID" generator="native" setter="false";
// Properties
property name="firstName" ormtype="string";
property name="lastName" ormtype="string";
property name="email" ormtype="string";
// validation
this.constraints = {
firstName = {required=true},
lastName = {required=true},
email = {required=true, type="email"}
};
}Now let us relish in the power of the orm-crud command:
That's it.
The command will create the handler with RESTFul capabilities, the views and all the necessary machinery for you to manage Contacts! Now go get a nice latte in celebration!
coldbox create orm-crud entity=models.Contacts pluralName=ContactsGenerated Handler: /Users/lmajano/tmp/restapp/handlers/Contacts.cfc
Generated View: /Users/lmajano/tmp/restapp/views/Contacts/edit.cfm
Generated View: /Users/lmajano/tmp/restapp/views/Contacts/editor.cfm
Generated View: /Users/lmajano/tmp/restapp/views/Contacts/new.cfm
Generated View: /Users/lmajano/tmp/restapp/views/Contacts/index.cfmYou will first make sure your contacts datsource exists in the Administrator and then we can declare our ORM settings in our Application.cfc
// ORM Settings
this.ormEnabled = true;
this.datasource = "contacts";
this.ormSettings = {
cfclocation = "models",
dbcreate = "update",
logSQL = true,
flushAtRequestEnd = false,
autoManageSession = false,
eventHandling = true,
eventHandler = "cborm.models.EventHandler"
};These are the vanilla settings for using the ORM with ColdBox. Make sure that flushAtRequestEnd and autoManageSession are set to false as the ORM extensions will manage that for you.
In this example, we also use dbcreate="update" as we want ColdFusion ORM to build the database for us which allows us to concentrate on the domain problem at hand and not persistence. You also see that we add our own eventHandler which points to the extension's event handler so we can make Active Entity become well, Active!
Now open your ColdBox.cfc and add the following to activate ORM injections inside of your configure() method.
orm = { injection = { enabled=true } };