Edit model and export CakePHP definitions
Work in sophisticated visual editor for CakePHP and save your time.
With Skipper you eliminate routine and avoid all mistypes.



1. Visually edit your project model.
<?php
/**
* Base EcommerceOrder object
*
* This class has been auto-generated by ORM Designer (http://www.skipper18.com)
*/
class BaseEcommerceOrder extends AppModel
{
public $name = 'EcommerceOrder';
public $primaryKey = 'id';
public $_schema =
array (
'id' =>
array (
'type' => 'integer',
'length' => 4
),
'ecommerce_order_state_id' =>
array (
'type' => 'integer',
'length' => 4
),
'contact_id' =>
array (
'type' => 'integer',
'length' => 4
),
'delivery_address_id' =>
array (
'type' => 'integer',
'length' => 4
),
'billing_address_id' =>
array (
'type' => 'integer',
'length' => 4
),
'ordered_at' =>
array (
'type' => 'timestamp'
),
'customer_note' =>
array (
'type' => 'string'
),
'internal_note' =>
array (
'type' => 'string'
)
);
public $validate =
array (
'id' =>
array (
'rule' =>
array (
'blank'
),
'allowEmpty' => false,
'required' => true,
'name' => 'content',
'message' => 'value required',
'last' => true
),
'ordered_at' =>
array (
'rule' =>
array (
'datetime'
),
'allowEmpty' => false,
'last' => true,
'message' => 'value required',
'name' => 'is_date',
'required' => true
)
);
public $hasMany =
array (
'EcommerceOrderStateChange' =>
array (
'className' => 'EcommerceOrderStateChange',
'foreignKey' => 'ecommerce_order_id'
),
'EcommerceOrderItem' =>
array (
'className' => 'EcommerceOrderItem',
'foreignKey' => 'ecommerce_order_id'
),
'EcommerceOrderSimpleItem' =>
array (
'className' => 'EcommerceOrderSimpleItem',
'foreignKey' => 'ecommerce_order_id'
)
);
public $belongsTo =
array (
'EcommerceOrderState' =>
array (
'className' => 'EcommerceOrderState',
'foreignKey' => 'ecommerce_order_state_id'
),
'Contact' =>
array (
'className' => 'Contact',
'foreignKey' => 'contact_id'
),
'DeliveryAddress' =>
array (
'className' => 'Address',
'foreignKey' => 'delivery_address_id'
),
'BillingAddress' =>
array (
'className' => 'Address',
'foreignKey' => 'billing_address_id'
)
);
}
?>2. Export it to complete definition files.
Download 14-day trial version
Try Skipper for free No credit card needed.
Why use Skipper
Definitions exported by one click
Export your project into CakePHP ORM definitions any time you need. Standardized output is completely ready-to-use, you don't need to edit or add anything.
Editing in visual interface
Create and edit all objects visually via smart dialogs and wizards. All changes in model evoke appropriate changes in exported CakePHP definition files.
Lower need of CakePHP skills
Value advisors, validators and assistants, definitions generated via standardized templates. Don't worry about CakePHP syntax and keywords anymore.
See all the features
Support for all CakePHP features
Supported formats
Skipper supports native CakePHP definitions format. Export your projects directly in PHP code.
Entities and modules
Create new or edit existing entity and change its fields and ORM properties. For better orientation in your CakePHP project, organize entities into colorful modules and regions.
Associations
Connect entities by one to one, one to many and many to many associations. Define owner and inverse entity or MN entity and aliases. Smart wizards will help you to define CakePHP associations easily.
Indexes
With Skipper you can create CakePHP indexes by a few clicks. In user-friendly visual interface define all needed indexes and choose fields indexed by them.
ORM Properties
You can edit any of your model properties directly in visual model. Skipper offers unique Property Editor where any value can be modified.
Customization
You can customize configurations for your CakePHP project. Define your own datatypes, custom properties, add new behaviors or change existing properties.
Support for MVC frameworks
No matter, which MVC framework you use, whether it is Symfony, Zend or any other. Definition files generated by Skipper have support for any existing MVC framework.
See all the features
Over 5,000 companies use Skipper every day
“

We have good use of the tool. It simplifies our daily work, saves us time and is simple and intuitive to use.
Thomas Somoen, Try/Apt
”
“

It is faster and gives less errors to have Skipper create the mapping code instead of writing it myself. Later in the development process I often use the Skipper diagram as a quick reference.
Herman Peeren, Yepr
”
Detailed list of supported CakePHP ORM features
Skipper model properties
| Object | Property |
|---|---|
| Project | name, storage path, description |
| Module | name, description, external plugin storage, export path and format |
| Entity | name, description |
| Field | name, type, size, required, unique, primary key, auto increment, default value, enum values, description |
| Association | owner/inverse entity, reference fields, owner/inverse alias, association type (one-to-one, one-to-many), parent requirement, description |
| Many to Many | mn entity, owner/inverse entity, reference fields, owner/inverse alias, description |
| Inheritance | base/derived entity, inheritance type, discriminator value/field, description |
| Index | name, unique, indexed fields, description |
CakePHP model properties
| Object | Property |
|---|---|
| Project | schema (export-file) |
| Module | - |
| Entity | actAs (Behaviors), useDbConfig, useTable, tablePrefix, displayField, recursive, order, data, virtualFields, alias, cacheQueries, cacheSources, findQueryType, logTransactions, table, tableToModel, transactional |
| Field | Validators |
| Association | conditions, fields, order, counterCache, counterScope, dependent, limit, offset, exclusive, finderQuery |
| Many to Many | finderQuery, deleteQuery, insertQuery, limit, offset, fields, conditions |
CakePHP datatypes support
boolean
integer
binary
date
time
timestamp
datetime
float
text
string
CakePHP associations support
CakePHP One to one (one-to-one)
CakePHP One to many (one-to-many)
CakePHP Many to one (many-to-one)
CakePHP Many to many (many-to-many)
CakePHP behaviors support
ACL
Containable
Translate
Tree
CakePHP validators support
alphaNumeric
between
blank
boolean
cc
comparison
date
decimal
email
equalTo
extension
ip
isUnique
minLength
maxLength
money
multiple
inList
numeric
notEmpty
phone
postal
range
ssn
url
reg-ex
own-function