893 lines
29 KiB
PHP
893 lines
29 KiB
PHP
<?php
|
|
class Entity extends Doctrine_Record
|
|
{
|
|
public function setUp()
|
|
{
|
|
$this->ownsOne('Email', array('local' => 'email_id'));
|
|
$this->hasMany('Phonenumber', array('local' => 'id', 'foreign' => 'entity_id'));
|
|
$this->ownsOne('Account', array('foreign' => 'entity_id'));
|
|
$this->hasMany('Entity', array('local' => 'entity1',
|
|
'refClass' => 'EntityReference',
|
|
'foreign' => 'entity2',
|
|
'equal' => true));
|
|
}
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('id', 'integer',20, 'autoincrement|primary');
|
|
$this->hasColumn('name', 'string',50);
|
|
$this->hasColumn('loginname', 'string',20, array('unique'));
|
|
$this->hasColumn('password', 'string',16);
|
|
$this->hasColumn('type', 'integer',1);
|
|
$this->hasColumn('created', 'integer',11);
|
|
$this->hasColumn('updated', 'integer',11);
|
|
$this->hasColumn('email_id', 'integer');
|
|
$this->option('subclasses', array('User','Group'));
|
|
}
|
|
}
|
|
class FieldNameTest extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('someColumn', 'string', 200, array('default' => 'some string'));
|
|
$this->hasColumn('someEnum', 'enum', 4, array('default' => 'php', 'values' => array('php', 'java', 'python')));
|
|
$this->hasColumn('someArray', 'array', 100, array('default' => array()));
|
|
$this->hasColumn('someObject', 'object', 200, array('default' => new stdClass));
|
|
$this->hasColumn('someInt', 'integer', 20, array('default' => 11));
|
|
}
|
|
}
|
|
class EntityReference extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('entity1', 'integer', null, 'primary');
|
|
$this->hasColumn('entity2', 'integer', null, 'primary');
|
|
//$this->setPrimaryKey(array('entity1', 'entity2'));
|
|
}
|
|
}
|
|
class Account extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('entity_id', 'integer');
|
|
$this->hasColumn('amount', 'integer');
|
|
}
|
|
}
|
|
|
|
class EntityAddress extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('user_id', 'integer', null, array('primary' => true));
|
|
$this->hasColumn('address_id', 'integer', null, array('primary' => true));
|
|
}
|
|
}
|
|
|
|
class Address extends Doctrine_Record
|
|
{
|
|
public function setUp()
|
|
{
|
|
$this->hasMany('User', array('local' => 'user_id',
|
|
'foreign' => 'address_id',
|
|
'refClass' => 'EntityAddress'));
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('address', 'string', 200);
|
|
}
|
|
}
|
|
|
|
// grouptable doesn't extend Doctrine_Table -> Doctrine_Connection
|
|
// won't initialize grouptable when Doctrine_Connection->getTable('Group') is called
|
|
|
|
class GroupTable { }
|
|
class Group extends Entity {
|
|
public function setUp() {
|
|
parent::setUp();
|
|
$this->hasMany('User', 'Groupuser.user_id');
|
|
$this->option('inheritanceMap', array('type' => 1));
|
|
}
|
|
}
|
|
class Error extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->ownsMany('Description', 'Description.file_md5', 'file_md5');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('message', 'string',200);
|
|
$this->hasColumn('code', 'integer',11);
|
|
$this->hasColumn('file_md5', 'string',32, 'primary');
|
|
}
|
|
}
|
|
class Description extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('description', 'string',3000);
|
|
$this->hasColumn('file_md5', 'string',32);
|
|
}
|
|
}
|
|
class UserTable extends Doctrine_Table { }
|
|
class User extends Entity
|
|
{
|
|
public function setUp()
|
|
{
|
|
parent::setUp();
|
|
$this->hasMany('Address', array('local' => 'user_id',
|
|
'foreign' => 'address_id',
|
|
'refClass' => 'EntityAddress'));
|
|
$this->ownsMany('Album', 'Album.user_id');
|
|
$this->ownsMany('Book', 'Book.user_id');
|
|
$this->hasMany('Group', 'Groupuser.group_id');
|
|
$this->option('inheritanceMap', array('type' => 0));
|
|
}
|
|
/** Custom validation */
|
|
public function validate()
|
|
{
|
|
// Allow only one name!
|
|
if ($this->name !== 'The Saint') {
|
|
$this->errorStack()->add('name', 'notTheSaint');
|
|
}
|
|
}
|
|
public function validateOnInsert()
|
|
{
|
|
if ($this->password !== 'Top Secret') {
|
|
$this->errorStack()->add('password', 'pwNotTopSecret');
|
|
}
|
|
}
|
|
public function validateOnUpdate()
|
|
{
|
|
if ($this->loginname !== 'Nobody') {
|
|
$this->errorStack()->add('loginname', 'notNobody');
|
|
}
|
|
}
|
|
}
|
|
class SelfRefTest extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('name', 'string', 50);
|
|
$this->hasColumn('created_by', 'integer');
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasOne('SelfRefTest as createdBy', array('local' => 'created_by'));
|
|
}
|
|
}
|
|
class Groupuser extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('added', 'integer');
|
|
$this->hasColumn('group_id', 'integer');
|
|
$this->hasColumn('user_id', 'integer');
|
|
}
|
|
}
|
|
class Phonenumber extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('phonenumber', 'string',20);
|
|
$this->hasColumn('entity_id', 'integer');
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasOne('Entity', array('local' => 'entity_id',
|
|
'foreign' => 'id',
|
|
'onDelete' => 'CASCADE'));
|
|
}
|
|
}
|
|
|
|
class Element extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 100);
|
|
$this->hasColumn('parent_id', 'integer');
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('Element as Child', 'Child.parent_id');
|
|
$this->hasOne('Element as Parent', 'Element.parent_id');
|
|
}
|
|
}
|
|
class Email extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('address', 'string', 150, 'email|unique');
|
|
}
|
|
}
|
|
class Book extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->ownsMany('Author', 'Author.book_id');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('user_id', 'integer');
|
|
$this->hasColumn('name', 'string',20);
|
|
}
|
|
}
|
|
class Author extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('book_id', 'integer');
|
|
$this->hasColumn('name', 'string',20);
|
|
}
|
|
}
|
|
class Album extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->ownsMany('Song', 'Song.album_id');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('user_id', 'integer');
|
|
$this->hasColumn('name', 'string',20);
|
|
}
|
|
}
|
|
class Song extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('album_id', 'integer');
|
|
$this->hasColumn('genre', 'string',20);
|
|
$this->hasColumn('title', 'string',30);
|
|
}
|
|
}
|
|
|
|
class Task extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->hasMany('Resource as ResourceAlias', 'Assignment.resource_id');
|
|
$this->hasMany('Task as Subtask', 'Subtask.parent_id');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string',100);
|
|
$this->hasColumn('parent_id', 'integer');
|
|
}
|
|
}
|
|
|
|
class Resource extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->hasMany('Task as TaskAlias', 'Assignment.task_id');
|
|
$this->hasMany('ResourceType as Type', 'ResourceReference.type_id');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string',100);
|
|
}
|
|
}
|
|
class ResourceReference extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('type_id', 'integer');
|
|
$this->hasColumn('resource_id', 'integer');
|
|
}
|
|
}
|
|
class ResourceType extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->hasMany('Resource as ResourceAlias', 'ResourceReference.resource_id');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('type', 'string',100);
|
|
}
|
|
}
|
|
class Assignment extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('task_id', 'integer');
|
|
$this->hasColumn('resource_id', 'integer');
|
|
}
|
|
}
|
|
class Forum_Category extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('root_category_id', 'integer', 10);
|
|
$this->hasColumn('parent_category_id', 'integer', 10);
|
|
$this->hasColumn('name', 'string', 50);
|
|
$this->hasColumn('description', 'string', 99999);
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('Forum_Category as Subcategory', 'Subcategory.parent_category_id');
|
|
$this->hasOne('Forum_Category as Parent', 'Forum_Category.parent_category_id');
|
|
$this->hasOne('Forum_Category as Rootcategory', 'Forum_Category.root_category_id');
|
|
}
|
|
}
|
|
class Forum_Board extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('category_id', 'integer', 10);
|
|
$this->hasColumn('name', 'string', 100);
|
|
$this->hasColumn('description', 'string', 5000);
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('Forum_Category as Category', 'Forum_Board.category_id');
|
|
$this->ownsMany('Forum_Thread as Threads', 'Forum_Thread.board_id');
|
|
}
|
|
}
|
|
|
|
class Forum_Entry extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('author', 'string', 50);
|
|
$this->hasColumn('topic', 'string', 100);
|
|
$this->hasColumn('message', 'string', 99999);
|
|
$this->hasColumn('parent_entry_id', 'integer', 10);
|
|
$this->hasColumn('thread_id', 'integer', 10);
|
|
$this->hasColumn('date', 'integer', 10);
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('Forum_Entry as Parent', 'Forum_Entry.parent_entry_id');
|
|
$this->hasOne('Forum_Thread as Thread', 'Forum_Entry.thread_id');
|
|
}
|
|
}
|
|
|
|
class Forum_Thread extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('board_id', 'integer', 10);
|
|
$this->hasColumn('updated', 'integer', 10);
|
|
$this->hasColumn('closed', 'integer', 1);
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('Forum_Board as Board', 'Forum_Thread.board_id');
|
|
$this->ownsMany('Forum_Entry as Entries', 'Forum_Entry.thread_id');
|
|
}
|
|
}
|
|
class App extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 32);
|
|
$this->hasColumn('user_id', 'integer', 11);
|
|
$this->hasColumn('app_category_id', 'integer', 11);
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('User', 'User.id');
|
|
$this->hasMany('App_Category as Category', 'App_Category.id');
|
|
}
|
|
}
|
|
|
|
class App_User extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('first_name', 'string', 32);
|
|
$this->hasColumn('last_name', 'string', 32);
|
|
$this->hasColumn('email', 'string', 128, 'email');
|
|
$this->hasColumn('username', 'string', 16, 'unique, nospace');
|
|
$this->hasColumn('password', 'string', 128, 'notblank');
|
|
$this->hasColumn('country', 'string', 2, 'country');
|
|
$this->hasColumn('zipcode', 'string', 9, 'nospace');
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('App', 'App.user_id');
|
|
}
|
|
}
|
|
|
|
class App_Category extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 32);
|
|
$this->hasColumn('parent_id', 'integer');
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('App', 'App.app_category_id');
|
|
$this->hasMany('App_Category as Parent', 'App_Category.parent_id');
|
|
}
|
|
}
|
|
|
|
class ORM_TestEntry extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->setTableName('test_entries');
|
|
$this->hasColumn('id', 'integer', 11, 'autoincrement|primary');
|
|
$this->hasColumn('name', 'string', 255);
|
|
$this->hasColumn('stamp', 'timestamp');
|
|
$this->hasColumn('amount', 'float');
|
|
$this->hasColumn('itemID', 'integer');
|
|
}
|
|
|
|
public function setUp() {
|
|
$this->hasOne('ORM_TestItem', 'ORM_TestEntry.itemID');
|
|
}
|
|
}
|
|
|
|
class ORM_TestItem extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->setTableName('test_items');
|
|
$this->hasColumn('id', 'integer', 11, 'autoincrement|primary');
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
|
|
public function setUp() {
|
|
|
|
$this->hasOne('ORM_TestEntry', 'ORM_TestEntry.itemID');
|
|
}
|
|
}
|
|
class ORM_AccessControl extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasMany('ORM_AccessGroup as accessGroups', 'ORM_AccessControlsGroups.accessGroupID');
|
|
}
|
|
}
|
|
|
|
class ORM_AccessGroup extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasMany('ORM_AccessControl as accessControls', 'ORM_AccessControlsGroups.accessControlID');
|
|
}
|
|
}
|
|
|
|
class ORM_AccessControlsGroups extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('accessControlID', 'integer', 11, array('primary' => true));
|
|
$this->hasColumn('accessGroupID', 'integer', 11, array('primary' => true));
|
|
}
|
|
}
|
|
class EnumTest extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('status', 'enum', 11, array('values' => array('open', 'verified', 'closed')));
|
|
$this->hasColumn('text', 'string');
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('EnumTest2 as Enum2', array('local' => 'id', 'foreign' => 'enum_test_id'));
|
|
$this->hasMany('EnumTest3 as Enum3', array('local' => 'text', 'foreign' => 'text'));
|
|
}
|
|
}
|
|
class EnumTest2 extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('status', 'enum', 11, array('values' => array('open', 'verified', 'closed')));
|
|
$this->hasColumn('enum_test_id', 'integer');
|
|
}
|
|
}
|
|
class EnumTest3 extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('text', 'string', 10, array('primary' => true));
|
|
}
|
|
}
|
|
class FilterTest extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string',100);
|
|
}
|
|
public function setUp() {
|
|
$this->ownsMany('FilterTest2 as filtered', 'FilterTest2.test1_id');
|
|
}
|
|
}
|
|
class FilterTest2 extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string',100);
|
|
$this->hasColumn('test1_id', 'integer');
|
|
}
|
|
}
|
|
class CustomPK extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('uid', 'integer',11, 'autoincrement|primary');
|
|
$this->hasColumn('name', 'string',255);
|
|
}
|
|
}
|
|
class Log_Entry extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('stamp', 'timestamp');
|
|
$this->hasColumn('status_id', 'integer');
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('Log_Status', 'Log_Entry.status_id');
|
|
}
|
|
}
|
|
class CPK_Test extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('CPK_Test2 as Test', 'CPK_Association.test2_id');
|
|
}
|
|
}
|
|
class CPK_Test2 extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('CPK_Test as Test', 'CPK_Association.test1_id');
|
|
}
|
|
}
|
|
class CPK_Association extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('test1_id', 'integer', 11, 'primary');
|
|
$this->hasColumn('test2_id', 'integer', 11, 'primary');
|
|
}
|
|
}
|
|
class Log_Status extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
}
|
|
class ValidatorTest extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('mymixed', 'string', 100);
|
|
$this->hasColumn('mystring', 'string', 100, 'notnull|unique');
|
|
$this->hasColumn('myarray', 'array', 1000);
|
|
$this->hasColumn('myobject', 'object', 1000);
|
|
$this->hasColumn('myinteger', 'integer', 11);
|
|
$this->hasColumn('myrange', 'integer', 11, array('range' => array(4,123)));
|
|
$this->hasColumn('myregexp', 'string', 5, array('regexp' => '/^[0-9]+$/'));
|
|
|
|
$this->hasColumn('myemail', 'string', 100, 'email');
|
|
$this->hasColumn('myemail2', 'string', 100, 'email|notblank');
|
|
}
|
|
}
|
|
class DateTest extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('date', 'date', 20);
|
|
}
|
|
}
|
|
class GzipTest extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('gzip', 'gzip', 100000);
|
|
}
|
|
}
|
|
|
|
class Tag extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->hasMany('Photo', 'Phototag.photo_id');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('tag', 'string', 100);
|
|
}
|
|
}
|
|
class Photo extends Doctrine_Record {
|
|
public function setUp() {
|
|
$this->hasMany('Tag', 'Phototag.tag_id');
|
|
}
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 100);
|
|
}
|
|
}
|
|
|
|
class Phototag extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('photo_id', 'integer');
|
|
$this->hasColumn('tag_id', 'integer');
|
|
}
|
|
}
|
|
|
|
class BooleanTest extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('is_working', 'boolean');
|
|
$this->hasColumn('is_working_notnull', 'boolean', 1, array('default' => false, 'notnull' => true));
|
|
}
|
|
}
|
|
class Data_File extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('filename', 'string');
|
|
$this->hasColumn('file_owner_id', 'integer');
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('File_Owner', 'Data_File.file_owner_id');
|
|
}
|
|
}
|
|
class NotNullTest extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 100, 'notnull');
|
|
$this->hasColumn('type', 'integer', 11);
|
|
}
|
|
}
|
|
class File_Owner extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('Data_File', 'Data_File.file_owner_id');
|
|
}
|
|
}
|
|
class MyUser extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string');
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('MyOneThing', 'MyOneThing.user_id');
|
|
$this->hasMany('MyOtherThing', 'MyOtherThing.user_id');
|
|
}
|
|
}
|
|
class MyOneThing extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string');
|
|
$this->hasColumn('user_id', 'integer');
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('MyUserOneThing', 'MyUserOneThing.one_thing_id');
|
|
}
|
|
}
|
|
class MyOtherThing extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('name', 'string');
|
|
$this->hasColumn('user_id', 'integer');
|
|
}
|
|
public function setUp() {
|
|
$this->hasMany('MyUserOtherThing', 'MyUserOtherThing.other_thing_id');
|
|
}
|
|
}
|
|
class MyUserOneThing extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('user_id', 'integer');
|
|
$this->hasColumn('one_thing_id', 'integer');
|
|
}
|
|
}
|
|
class MyUserOtherThing extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('user_id', 'integer');
|
|
$this->hasColumn('other_thing_id', 'integer');
|
|
}
|
|
}
|
|
class CategoryWithPosition extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('position', 'integer');
|
|
$this->hasColumn('name', 'string', 255);
|
|
}
|
|
public function setUp() {
|
|
$this->ownsMany('BoardWithPosition as Boards', 'BoardWithPosition.category_id');
|
|
}
|
|
}
|
|
class BoardWithPosition extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('position', 'integer');
|
|
$this->hasColumn('category_id', 'integer');
|
|
}
|
|
public function setUp() {
|
|
$this->hasOne('CategoryWithPosition as Category', 'BoardWithPosition.category_id');
|
|
}
|
|
}
|
|
class Package extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('description', 'string', 255);
|
|
}
|
|
|
|
public function setUp()
|
|
{
|
|
$this->ownsMany('PackageVersion as Version', 'PackageVersion.package_id');
|
|
}
|
|
}
|
|
class PackageVersion extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('package_id', 'integer');
|
|
$this->hasColumn('description', 'string', 255);
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasOne('Package', 'PackageVersion.package_id');
|
|
$this->hasMany('PackageVersionNotes as Note', 'PackageVersionNotes.package_version_id');
|
|
}
|
|
}
|
|
class PackageVersionNotes extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('package_version_id', 'integer');
|
|
$this->hasColumn('description', 'string', 255);
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasOne('PackageVersion', 'PackageVersionNotes.package_version_id');
|
|
}
|
|
}
|
|
class NestTest extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('name', 'string');
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasMany('NestTest as Parents', array('local' => 'child_id',
|
|
'refClass' => 'NestReference',
|
|
'foreign' => 'parent_id'));
|
|
$this->hasMany('NestTest as Children', array('local' => 'parent_id',
|
|
'refClass' => 'NestReference',
|
|
'foreign' => 'child_id'));
|
|
|
|
$this->hasMany('NestTest as Relatives', array('local' => 'child_id',
|
|
'refClass' => 'NestReference',
|
|
'foreign' => 'parent_id',
|
|
'equal' => true));
|
|
}
|
|
}
|
|
class NestReference extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('parent_id', 'integer', 4, 'primary');
|
|
$this->hasColumn('child_id', 'integer', 4, 'primary');
|
|
}
|
|
}
|
|
|
|
class ValidatorTest_Person extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('identifier', 'integer', 4, array('notblank', 'unique'));
|
|
$this->hasColumn('is_football_player', 'boolean');
|
|
}
|
|
|
|
public function setUp() {
|
|
$this->ownsOne('ValidatorTest_FootballPlayer', 'ValidatorTest_FootballPlayer.person_id');
|
|
}
|
|
}
|
|
|
|
class ValidatorTest_FootballPlayer extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
$this->hasColumn('person_id', 'string', 255);
|
|
$this->hasColumn('team_name', 'string', 255);
|
|
$this->hasColumn('goals_count', 'integer', 4);
|
|
}
|
|
}
|
|
|
|
class QueryTest_Category extends Doctrine_Record
|
|
{
|
|
/**
|
|
* The depth of the category inside the tree.
|
|
* Non-persistent field.
|
|
*
|
|
* @var integer
|
|
*/
|
|
public $depth;
|
|
|
|
/**
|
|
* Table definition.
|
|
*/
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('rootCategoryId as rootCategoryId', 'integer', 4,
|
|
array('default' => 0));
|
|
$this->hasColumn('parentCategoryId as parentCategoryId', 'integer', 4,
|
|
array('notnull', 'default' => 0));
|
|
$this->hasColumn('name as name', 'string', 50,
|
|
array('notnull', 'unique'));
|
|
$this->hasColumn('position as position', 'integer', 4,
|
|
array('default' => 0, 'notnull'));
|
|
}
|
|
|
|
/**
|
|
* Relations definition.
|
|
*/
|
|
public function setUp()
|
|
{
|
|
$this->ownsMany('QueryTest_Category as subCategories', 'subCategories.parentCategoryId');
|
|
$this->hasOne('QueryTest_Category as rootCategory', 'QueryTest_Category.rootCategoryId');
|
|
$this->ownsMany('QueryTest_Board as boards', 'QueryTest_Board.categoryId');
|
|
}
|
|
}
|
|
|
|
class QueryTest_Board extends Doctrine_Record
|
|
{
|
|
/**
|
|
* Initializes the table definition.
|
|
*/
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('categoryId as categoryId', 'integer', 4,
|
|
array('notnull'));
|
|
$this->hasColumn('name as name', 'string', 100,
|
|
array('notnull', 'unique'));
|
|
$this->hasColumn('lastEntryId as lastEntryId', 'integer', 4,
|
|
array('default' => 0, 'notnull'));
|
|
$this->hasColumn('position as position', 'integer', 4,
|
|
array('default' => 0, 'notnull'));
|
|
}
|
|
|
|
/**
|
|
* Initializes the relations.
|
|
*/
|
|
public function setUp()
|
|
{
|
|
$this->hasOne('QueryTest_Category as category', 'QueryTest_Board.categoryId');
|
|
$this->ownsOne('QueryTest_Entry as lastEntry', 'QueryTest_Board.lastEntryId');
|
|
}
|
|
}
|
|
|
|
class QueryTest_Entry extends Doctrine_Record
|
|
{
|
|
/**
|
|
* Table structure.
|
|
*/
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('authorId', 'integer', 4,
|
|
array('notnull'));
|
|
$this->hasColumn('date', 'integer', 4,
|
|
array('notnull'));
|
|
}
|
|
|
|
/**
|
|
* Runtime definition of the relationships to other entities.
|
|
*/
|
|
public function setUp()
|
|
{
|
|
$this->hasOne('QueryTest_User as author', 'QueryTest_Entry.authorId');
|
|
}
|
|
}
|
|
|
|
class QueryTest_User extends Doctrine_Record
|
|
{
|
|
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('username as username', 'string', 50,
|
|
array('notnull'));
|
|
$this->hasColumn('visibleRankId', 'integer', 4);
|
|
}
|
|
|
|
/**
|
|
* Runtime definition of the relationships to other entities.
|
|
*/
|
|
public function setUp()
|
|
{
|
|
$this->hasOne('QueryTest_Rank as visibleRank', 'QueryTest_User.visibleRankId');
|
|
$this->hasMany('QueryTest_Rank as ranks', 'QueryTest_UserRank.rankId');
|
|
}
|
|
}
|
|
|
|
class QueryTest_UserRank extends Doctrine_Record
|
|
{
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('rankId', 'integer', 4, array('primary'));
|
|
$this->hasColumn('userId', 'integer', 4, array('primary'));
|
|
}
|
|
}
|
|
|
|
class QueryTest_Rank extends Doctrine_Record
|
|
{
|
|
/**
|
|
* Initializes the table definition.
|
|
*/
|
|
public function setTableDefinition()
|
|
{
|
|
$this->hasColumn('title as title', 'string', 100,
|
|
array('notnull'));
|
|
$this->hasColumn('color as color', 'string', 20,
|
|
array('notnull', 'regexp' => '/^[a-zA-Z\-]{3,}|#[0-9a-fA-F]{6}$/D'));
|
|
$this->hasColumn('icon as icon', 'string', 50,
|
|
array('notnull', 'default' => ' ', 'regexp' => '/^[a-zA-Z0-9_\-]+\.(jpg|gif|png)$/D'));
|
|
}
|
|
public function setUp()
|
|
{
|
|
$this->hasMany('QueryTest_User as users', 'QueryTest_UserRank.userId');
|
|
}
|
|
}
|
|
|
|
class ValidatorTest_ClientModel extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
|
|
$this->hasColumn('id', 'integer', 4, array('notnull' => true,
|
|
'primary' => true,
|
|
'autoincrement' => true,
|
|
'unsigned' => true));
|
|
$this->hasColumn('short_name', 'string', 32, array('notnull' => true, 'notblank', 'unique' => true));
|
|
}
|
|
|
|
public function setUp() {
|
|
$this->hasMany("ValidatorTest_AddressModel", array('local' => 'client_id', 'foreign' => 'address_id', 'refClass' => 'ValidatorTest_ClientToAddressModel'));
|
|
}
|
|
}
|
|
|
|
class ValidatorTest_ClientToAddressModel extends Doctrine_Record {
|
|
|
|
public function setTableDefinition() {
|
|
|
|
$this->hasColumn("client_id", "integer", 11, array('primary' => true));
|
|
$this->hasColumn("address_id", "integer", 11, array('primary' => true));
|
|
}
|
|
|
|
public function construct(){
|
|
}
|
|
|
|
public function setUp() {
|
|
}
|
|
}
|
|
|
|
class ValidatorTest_AddressModel extends Doctrine_Record {
|
|
public function setTableDefinition() {
|
|
|
|
$this->hasColumn("id", "integer", 11, array('autoincrement' => true,
|
|
'primary' => true
|
|
));
|
|
$this->hasColumn('address1', 'string', 255, array('notnull' => true, 'notblank'));
|
|
$this->hasColumn('address2', 'string', 255, array('notnull' => true));
|
|
$this->hasColumn('city', 'string', 255, array('notnull' => true, 'notblank'));
|
|
$this->hasColumn('state', 'string', 10, array('notnull' => true, 'notblank', 'usstate'));
|
|
$this->hasColumn('zip', 'string', 15, array('notnull' => true, 'notblank', 'regexp' => '/^[0-9-]*$/'));
|
|
}
|
|
|
|
public function setUp() {
|
|
$this->hasMany('ValidatorTest_ClientModel', array('local' => 'address_id', 'foreign' => 'client_id', 'refClass' => 'ValidatorTest_ClientToAddressModel'));
|
|
}
|
|
}
|
|
|
|
?>
|