1
0
mirror of synced 2024-12-13 22:56:04 +03:00
doctrine2/tests/classes.php
2007-05-27 18:56:54 +00:00

629 lines
21 KiB
PHP

<?php
class Entity extends Doctrine_Record {
public function setUp() {
$this->ownsOne('Email', 'Entity.email_id');
$this->ownsMany('Phonenumber', 'Phonenumber.entity_id');
$this->ownsOne('Account', 'Account.entity_id');
$this->hasMany('Entity', array('local' => 'entity1',
'refClass' => 'EntityReference',
'foreign' => 'entity2'));
}
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');
$this->hasColumn('address_id', 'integer');
}
}
class Address extends Doctrine_Record {
public function setUp() {
$this->hasMany('User', 'Entityaddress.entity_id');
}
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', 'Entityaddress.address_id');
$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 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', 'Phonenumber.entity_id');
}
}
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);
$this->hasColumn('accessGroupID', 'integer', 11);
$this->setPrimaryKey(array('accessControlID', 'accessGroupID'));
}
}
class EnumTest extends Doctrine_Record {
public function setTableDefinition() {
$this->hasColumn('status', 'enum', 11, array('values' => array('open', 'verified', 'closed')));
}
}
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', 'NestReference.parent_id');
$this->hasMany('NestTest as Children', 'NestReference.child_id');
}
}
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);
}
}
?>