ownsOne("Email","Entity.email_id"); $this->ownsMany("Phonenumber","Phonenumber.entity_id"); $this->ownsOne("Account","Account.entity_id"); $this->hasMany("Entity","EntityReference.entity1-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"); } } 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')); $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)); $this->setEnumValues("someEnum", array('php', 'java', 'python')); } } class EntityReference extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn("entity1","integer"); $this->hasColumn("entity2","integer"); $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("entity_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->setInheritanceMap(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->setInheritanceMap(array("type"=>0)); } /** Custom validation */ public function validate() { // Allow only one name! if ($this->name !== 'The Saint') { $this->getErrorStack()->add('name', 'notTheSaint'); } } public function validateOnInsert() { if ($this->password !== 'Top Secret') { $this->getErrorStack()->add('password', 'pwNotTopSecret'); } } public function validateOnUpdate() { if ($this->loginname !== 'Nobody') { $this->getErrorStack()->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); $this->setEnumValues("status", 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'); } } ?>