Home
Doctrine - Open Source PHP ORM
Contents
1. doctrine generate models yaml generate models yaml Generated models successfully from YAML schema SENSIOLABS X Chapter 4 Code Igniter and Doctrine 21 Now check the file system application models generated BaseUser php You will see a compclass definition like below Listing This class has been auto generated by the Doctrine ORM Framework a abstract class BaseUser extends Doctrine Record public function setTableDefinition this gt setTableName user this gt hasColumn id integer 4 array primary gt true autoincrement gt true this gt hasColumn username string 255 this gt hasColumn password string 255 public function setUp this gt hasMany Group as Groups array refClass gt UserGroup local gt user id foreign gt group id this gt hasMany UserGroup array local gt id foreign gt user id Add custom methods to system application models User php This class has been auto generated by the Doctrine ORM Framework class User extends BaseUser public function setPassword password this gt password md5 password This class has been auto generated by the Doctrine ORM Framework my class UserTable extends Doctrine Table public function retrieveALl query new Doctrine Query query gt from User u query gt orderby u username ASC retu
2. config doctrine db path for you which we will do once we setup our schema and some data fixtures aay iai a Listing all doctrine class sfDoctrineDatabase param dsn sqlite Setup Schema Now that we have our database configured lets define our YAML schema files in config doctrine schema yml In this example we are setting up a simple BlogPost model which hasMany Tags De Listing BlogPost ai actAs Sluggable fields title SENSIOLABS X Listing 2 6 Listing 2 7 Chapter 2 symfony and Doctrine 12 Timestampable columns title string 255 body clob author string 255 relations Tags class Tag refClass BlogPostTag foreignAlias BlogPosts BlogPostTag columns blog post id type integer primary true tag_id type integer primary true Tag actAs Timestampable columns name string 255 Now that we have our Doctrine schema defined lets create some test data fixtures in data fixtures data yml Open the file in your favorite editor and paste the below YAML in to the file BlogPost BlogPost_1 title symfony Doctrine body symfony and Doctrine are great author Jonathan H Wage Tags symfony doctrine php Tag symfony name symfony doctrine name doctrine php name php Build Database Ok now for the fun stuff We have our schema and we have some data fixtures so lets run one single Doctrine command and create your database gener
3. fixtures models path gt dirname _ FILE_ DIRECTORY SEPARATOR models migrations path gt dirname _ FILE_ DIRECTORY SEPARATOR migrations sql_path gt dirname _ FILE_ SENSIOLABS X Chapter 4 Code Igniter and Doctrine 19 DIRECTORY SEPARATOR sql yaml_schema_path gt dirname _ FILE DIRECTORY SEPARATOR schema cli new Doctrine Cli config cli gt run SERVER argv Now we must create all the directories for Doctrine to use Create directory for your yaml data fixtures files Listing mkdir system application fixtures i Create directory for your migration classes mkdir system application migrations Create directory for your yaml schema files mkdir system application schema Create directory to generate your sql to create the database in mkdir system application sql Now you have a command line interface ready to go If you execute the doctrine shell script with no argument you will get a list of available commands cd system application Listing doctrine i Doctrine Command Line Interface doctrine build all doctrine build all load doctrine build all reload doctrine compile doctrine create db doctrine create tables doctrine dql doctrine drop db doctrine dump data doctrine generate migration doctrine generate migrations db doctrine generate migrations models doctrine generate models db doctri
4. id 3 dql name Documentation dql dql id 2 dql username jwage dql password changeme dql Groups dql dql id 2 SENSIOLABS X Listing 1 9 Chapter 1 My First Project 8 dql name Lead dql dql id 3 dql name Documentation User CRUD Now we can demonstrate how to implement Doctrine in to a super simple module for managing users and passwords Place the following code in your index php and pull it up in your browser You will see the simple application require once config php Doctrine LoadModels models module isset REQUEST module REQUEST module users action isset REQUEST action REQUEST action list if module users userId isset REQUEST id amp amp REQUEST id gt 0 REQUEST id null userTable Doctrine getTable User if userId null user new User else user userlable gt find userlId switch action case edit case add echo lt form action index php module users amp action save method POST gt lt fieldset gt lt lLegend gt User lt legend gt lt input type hidden name id value user gt id u J gt lt label for username gt Username lt label gt lt input type text name user username value user gt username gt lt label for password gt Password lt label gt lt input type text name user passwo
5. userlTable gt retrieveALL echo users gt count echo 2 foreach users as user echo user gt username SENSIOLABS X
6. connection db default dsn db default database Set the model loading to conservative lazy loading Doctrine Manager getInstance gt setAttribute model loading conservative Load the models for the autoloader Doctrine loadModels realpath dirname FILE DIRECTORY SEPARATOR models Now we must make sure system application config database php is included in your front controller Open your front controller in your favorite text editor cd vi index php Change the last 2 lines of code of index php with the following require once APPPATH config database php require once BASEPATH codeigniter CodeIgniter EXT Setup Command Line Interface Create the following file system application doctrine and chmod the file so it can be executed Place the code below in to the doctrine file vi system application doctrine Place this code in system application doctrine usr bin env php define BASEPATH mockup that this app was executed from ci chdir dirname _ FILE include doctrine php Now create the following file system application doctrine php Place the code below in to the doctrine php file require once config database php Configure Doctrine Cli Normally these are arguments to the cli tasks but if they are set here the arguments will be auto filled config array data fixtures path gt dirname _ FILE DIRECTORY SEPARATOR
7. Doctrine Query 1 6 query gt from User u u Groups g users query gt execute echo lt pre gt print_r users gt toArray true The print r should output the following data You will notice that this is the data that we populated by placing the yaml file in the data fixtures files You can add more data to the fixtures and rerun the build all reload command to reinitialize the database Listing ctin Array 0 gt Array id gt 1 username gt zYne password gt changeme Groups gt Array 0 gt Array id gt 1 name gt Founder 1 gt Array id gt 2 name gt Lead 2 gt Array id gt 3 name gt Documentation SENSIOLABS X Chapter 1 My First Project 7 1 gt Array id gt 2 username gt jwage password gt changeme Groups gt Array 0 gt Array id gt 2 name gt Lead 1 gt Array id gt 3 name gt Documentation You can also issue DQL queries directly to your database by using the dql command line function It is used like the following jwage sandbox jwage doctrine dql FROM User u u Groups g Listing dql executing FROM User u u Groups g ad dql dql id 1 dql username zYne dql password changeme dql Groups dql dql id 1 dql name Founder dql dql id 2 dql name Lead dql dql
8. other Doctrine resources below to learn more about Doctrine Full User Manual http www phpdoctrine org documentation manual 0 11 one page API Documentation http www phpdoctrine org documentation api 0_ 11 E Cheatsheet http www phpdoctrine org Doctrine Cheat Sheet pdf Blog http www phpdoctrine org blog Community http www phpdoctrine org community 1 Frequently Asked Questions http www phpdoctrine org faq Download http www phpdoctrine org download 4 http www phpdoctrine org documentation manual 11 chapter dql doctrine query Language 5 http www phpdoctrine org documentation manual 0 11 chapter basic schema mapping constraints and validators 6 http www phpdoctrine org documentation manual 0 11 chapter hierarchical data 7 http www phpdoctrine org documentation manual 0 11 chapter caching 8 http www phpdoctrine org documentation manual 0 11 0ne page 9 http www phpdoctrine org documentation api O 11 10 11 12 13 14 http www phpdoctrine org Doctrine Cheat Sheet pdf http www phpdoctrine org blog http www phpdoctrine org community http www phpdoctrine org faq http www phpdoctrine org download SENSIOLABS X Chapter 3 symfony Doctrine Migrations 16 Chapter 3 symfony Doctrine Migrations SENSIOLABS X Chapter 4 Code Igniter and Doctrine 17 Chapter 4 Code Igniter and Doctrine This tutorial will get you
9. requires a web server PHP and PDO Sglite Download To get started first download the latest Doctrine sandbox package http www phpdoctrine org download Second extract the downloaded file and you should have a directory named Doctrine x x x Sandbox Inside of that directory is a simple example implementation of a Doctrine based web application Package Contents The files directory structure should look like the following cd Doctrine 0 10 1 Sandbox Listing ls config php doctrine index php migrations schema data doctrine php lib models The sandbox does not require any configuration it comes ready to use with a sqlite database Below is a description of each of the files directories and what its purpose is e doctrine Shell script for executing the command line interface Run with doctrine to see a list of command or doctrine help to see a detailed list of the commands e doctrine php Php script which implements the Doctrine command line interface which is included in the above doctrine 1 http www phpdoctrine org download SENSIOLABS X Chapter 1 My First Project 4 shell script e index php Front web controller for your web application e migrations Folder for your migration classes e schema Folder for your schema files e models Folder for your model files e lib Folder for the Doctrine core library files Running the CLI If you execute the doctrine shell script from the
10. S doctrine Doctrine 1 0 License Creative Commons Attribution Share Alike 3 0 Unported License Version cookbook 1 0 de 201 0 05 12 SENSIOLABS X Table of Contents Table of Contents My First Project Introduction Download Package Contents Running the CLI Defining Schema Test Data Fixtures Building Everything Running Tests User CRUD iviceimerecns symfony and Doctrine SetU inavcncavenitonavanieends Setup Database Setup Schema Build Database Admin Generators Helpful Links symfony Doctrine Migration Code Igniter and Doctrine 4 Download Doctrine 05 Setup Doctrine s es Setup Command Line Interface Start Using Doctrine eesooooeseoooo eee ccreccccce eee eee eccene eee ec ccceccccs eee eccccee eee cccceee eososeseoo eee ccceee eee cccceee sec ceeeeee eee eccceee eee ceceee eososeseoooo RETETEI sessososoooo sesosssooooo ll DOU PWW WW m N eesooosseooooosoooooo sesosssososoososesoooooeeeoo 1 rr rr 1 8 meee cre eccccccccccccccceces 20 SENSIOLABS X Chapter 1 My First Project 3 Chapter 1 My First Project Introduction This is a tutorial amp how to on creating your first project using the fully featured PHP Doctrine ORM This tutorial uses the the ready to go Doctrine sandbox package It
11. ate your models create tables and load the data fixtures php symfony doctrine build all reload frontend gt gt doctrine Are you sure you wish to drop your databases y n y gt gt doctrine Successfully dropped database f 1 1Doctrine config doctrine db SENSIOLABS X Chapter 2 symfony and Doctrine 13 gt gt doctrine Successfully created database f 1 1Doctrine config doctrine db gt gt doctrine Generated models successfully gt gt doctrine Created tables successfully gt gt doctrine Data was successfully loaded Now your doctrine db SQLite database is created all the tables for your schema were created and the data fixtures were populated in to the tables Now lets do a little playing around with the data to see how we can use the Doctrine Query Language to retrieve data php symfony doctrine dql frontend FROM BlogPost p p Tags t Listing gt gt doctrine executing FROM BlogPost p p Tags t gt gt doctrine gt gt doctrine id 1 gt gt doctrine title symfony Doctrine gt gt doctrine body symfony and Doctrine are great gt gt doctrine author Jonathan H Wage gt gt doctrine slug symfony doctrine gt gt doctrine created at 2008 06 16 12 28 57 gt gt doctrine updated at 2008 06 16 12 28 57 gt gt doctrine Tags gt gt doctrine gt gt doctrine id 1 gt gt doctrine name symfony gt gt doctrine created at 2008 06 16 12 28 57 gt gt
12. command line it will output the following et doctrine Doctrine Command Line Interface doctrine build all doctrine build all load doctrine build all reload doctrine compile doctrine create db doctrine create tables doctrine dql doctrine drop db doctrine dump data doctrine generate migration doctrine generate migrations db doctrine generate migrations models doctrine generate models db doctrine generate models yaml doctrine generate sql doctrine generate yaml db doctrine generate yaml models doctrine load data doctrine migrate doctrine rebuild db Defining Schema Below is a sample yaml schema file to get started You can place the yaml file in schemas schema yml The command line interface looks for all yml files in the schemas folder Listing User columns id primary true autoincrement true type integer 4 username string 255 password string 255 relations Groups class Group refClass UserGroup SENSIOLABS X Chapter 1 My First Project 5 foreignAlias Users Group tableName groups columns id primary true autoincrement true type integer 4 name string 255 UserGroup columns user_id integer 4 group id integer 4 relations User onDelete CASCADE Group onDelete CASCADE Test Data Fixtures Below is a sample yaml data fixtures file You can place this file in data fixtures data yml The command line interface lo
13. doctrine updated at 2008 06 16 12 28 57 gt gt doctrine gt gt doctrine id 2 gt gt doctrine name doctrine gt gt doctrine created at 2008 06 16 12 28 57 gt gt doctrine updated at 2008 06 16 12 28 57 gt gt doctrine gt gt doctrine id 3 gt gt doctrine name php gt gt doctrine created at 2008 06 16 12 28 57 gt gt doctrine updated at 2008 06 16 12 28 57 Now lets do a little explaining of the data that was returned As you can see the models have a created at updated at and slug column which were not defined in the schema files These columns are added by the behaviors attached to the schema information under the actAs setting The created at and updated at column are automatically set onInsert and onUpdate and the slug column is a url friendly string that is created from the value of the name column Doctrine has a few behaviors that are included in core such as Sluggable and Timestampable but the behavior system is built to allow anyone to easily write behaviors for their models to re use over and over Admin Generators Now we have our data model all setup and populated with some test fixtures so lets generate an admin generator to manage the blog posts and tags php symfony doctrine init admin frontend blog posts BlogPost Listing php symfony doctrine init admin frontend tags Tag p Now go open up your web browser and check out the frontend application and
14. ne generate models yaml doctrine generate sql doctrine generate yaml db doctrine generate yaml models doctrine load data doctrine migrate doctrine rebuild db On Microsoft Windows call the script via the PHP binary because the script won t invoke it automatically php exe doctrine Listing SENSIOLABS X Listing 4 13 Listing 4 14 Chapter 4 Code Igniter and Doctrine Start Using Doctrine 20 It is simple to start using Doctrine now First we must create a yaml schema file save it at schema with filename like user yml User columns id primary true autoincrement true type integer 4 username string 255 password string 255 relations Groups class Group class name local user id foreign group id refClass UserGroup foreignAlias Users hasMany Users Group tableName groups columns id primary true autoincrement true type integer 4 name string 255 UserGroup columns user id type integer 4 primary true group id type integer 4 primary true relations User local user id foreign id onDelete CASCADE Group local group id foreign id onDelete CASCADE Class name Optional if alias is the Local Foreign xRefClass for relating Users to Groups Opposite relationship alias Group Local key Foreign key Database constraint Now if you run the following command it will generate your models in system application models
15. not capable of Below you can find some more information on the major features that Doctrine supports Helpful Links e Behaviors http www phpdoctrine org documentation manual 01 1 chapter plugins Easily create reusable behaviors for your Doctrine models e Migrations http www phpdoctrine org documentation manual 0 11 chapter migration Deploy database schema changes to your production environment through a programmatic interface 3 2 http www phpdoctrine org documentation manual 0 11 chapter plugins 3 http www phpdoctrine org documentation manual 0 11 chapter migration SENSIOLABS HY Chapter 2 symfony and Doctrine Doctrine Query Language http www phpdoctrine org documentation manual 01 1 chapter dql doctrine query language Build your database queries through a fluent OO interface Validators http www phpdoctrine org documentation manual 0 11 chapter basic schema mapping constraints and validators Turn on column validators for both database and code level validation Hierarchical Data http www phpdoctrine org documentation manual 01 1 chapter hierarchical data Turn your models in to nested sets easily with the flip of a switch Caching http www phpdoctrine org documentation manual 0 1 1 chapter caching Tune performance by caching your DQL query parsing and the result sets of queries 15 If this short tutorial sparked your interest in Doctrine you can check out some
16. oks for all yml files in the data fixtures folder aes Listing User i zyne username zYne password changeme Groups founder lead documentation jwage username jwage password changeme Groups lead documentation Group founder name Founder lead name Lead documentation name Documentation Building Everything Now that you have written your schema files and data fixtures you can now build everything and begin working with your models Run the command below and your models will be generated in the models folder doctrine build all reload Listing build all reload Are you sure you wish to drop your databases y n y SENSIOLABS X Chapter 1 My First Project 6 build all reload Successfully dropped database for connection sandbox at path Users jwage Sites doctrine branches 0 10 tools sandbox sandbox db build all reload Generated models successfully from YAML schema build all reload Successfully created database for connection sandbox at path Users jwage Sites doctrine branches 0 10 tools sandbox sandbox db build all reload Created tables successfully build all reload Data was successfully loaded Take a peak in the models folder and you will see that the model classes were generated for you Now you can begin coding in your index php to play with Doctrine itself Inside index php place some code like the following for a simple test Running Tests Listing query new
17. ommands below and continue reading Setup Listing mkdir symfony1 1Doctrine cd symfony1 1Doctrine path to symfony generate project symfonyl 1Doctrine svn co http svn symfony project com plugins sfDoctrinePlugin trunk plugins sfDoctrinePlugin php symfony cc Now type the following command to list all the new commands that sfDoctrinePlugin provides You will notice that it gives you all the same commands as sfPropelPlugin and lots more Listin php symfony list doctrine lt Available tasks for the doctrine namespace build all Generates Doctrine model SQL and initializes the database doctrine build all build all load Generates Doctrine model SQL initializes database and load data doctrine build all load build all reload Generates Doctrine model SQL initializes database and load data doctrine build all reload build all reload test all Generates Doctrine model SQL initializes database load data and run all test suites doctrine build all reload test all build db Creates database for current model doctrine build db build forms Creates form classes for the current model doctrine build forms build model Creates classes for the current model doctrine build model build schema Creates a schema xml from an existing database doctrine build schema build sql Creates SQL for the current model doctrine build sql data dump Dumps data to the fixtures directory doctrine dump da
18. rd value user gt password gt lt input type submit name save value Save gt lt fieldset lt form gt break case save user gt merge REQUEST user user gt save header Location index php module users amp action edit amp id user gt id break case delete user gt delete SENSIOLABS X Chapter 1 My First Project 9 header location index php module users amp action List break default query new Doctrine Query query gt from User u gt orderby u username users query gt execute echo lt ul gt foreach users as user echo lt li gt lt a href index php module users amp action edit amp id user gt id gt user gt username lt a gt amp nbsp lt a href index php module users amp action delete amp id user gt id gt X lt a gt lt li gt echo lt ul gt echo lt ul gt lt li gt lt a href index php module users amp action add gt Add lt a gt lt 1li gt lt li gt lt a href index php module users amp action List gt List lt a gt lt li gt lt ul gt else throw new Exception Invalid module SENSIOLABS X Chapter 2 symfony and Doctrine 10 Chapter 2 symfony and Doctrine So you want to give Doctrine a try with symfony 1 1 eh First we will need to setup a new symfony 1 1 project and install the sfDoctrinePlugin for 1 1 Execute the following c
19. rn query gt execute SENSIOLABS X Listing 4 16 Listing 4 17 Listing 4 18 Listing 4 19 Chapter 4 Code Igniter and Doctrine 22 Now we can create some sample data to load in to our application this step requires you have a valid database configured and ready to go The build all reload task will drop and recreate the database create tables and load data fixtures Create a file in system application fixtures users yml vi fixtures users yml Add the following yaml to the file User jwage username jwage password test Now run the build all reload task to drop db build models recreate doctrine build all reload build all reload Are you sure you wish to drop your databases y n y build all reload Successfully dropped database named jwage codeigniter build all reload Generated models successfully from YAML schema build all reload Successfully created database named jwage codeigniter build all reload Created tables successfully build all reload Data was successfully loaded Now we are ready to use Doctrine in our actual actions Lets open our system application views welcome message php and somewhere add the following code somewhere user new User user gt username zYne user gt setPassword password user gt save userTable Doctrine getTable User user userTable gt findOneByUsername zYne echo user gt username prints zYne users
20. started using Doctrine with Code Igniter Download Doctrine First we must get the source of Doctrine from svn and place it in the system database folder cd system database Listing svn co http svn phpdoctrine org branches 0 11 lib doctrine f cd If you use svn in your project you can set Doctrine as an external so you receive bug fixes automatically from svn svn propedit svn externals database In your favorite editor add the following line doctrine http svn phpdoctrine org branches 11 lib Setup Doctrine Now we must setup the configuration for Doctrine and load it in system application config database php vi application config database php Listing The code below needs to be added under this line of code db default cachedir Listing Add this code Create dsn from the info above Listing 4 4 db default dsn db default dbdriver db default username db default password db default hostname db default database Require Doctrine php require once realpath dirname _ FILE DIRECTORY SEPARATOR database doctrine Doctrine php SENSIOLABS X Listing 4 5 Listing 4 6 Listing 4 7 Listing 4 8 Listing 4 9 Chapter 4 Code Igniter and Doctrine 18 Set the autoloader spl_autoload register array Doctrine autoload Load the Doctrine connection Doctrine Manager
21. ta data load Loads data from fixtures directory SENSIOLABS YY Chapter 2 symfony and Doctrine 11 doctrine load data dql Execute a DQL query and view the results doctrine dql drop db Drops database for current model doctrine drop db generate crud Generates a Doctrine CRUD module doctrine generate crud generate migration Generate migration class doctrine generate migration generate migrations db Generate migration classes from existing database connections doctrine generate migrations db doctrine gen migrations from db generate migrations models Generate migration classes from an existing set of models doctrine generate migrations models doctrine gen migrations from models init admin Initializes a Doctrine admin module doctrine init admin insert sql Inserts SQL for current model doctrine insert sqL migrate Migrates database to current specified version doctrine migrate rebuild db Creates database for current model doctrine rebuild db First sfDoctrinePlugin currently requires that at least one application be setup so lets just instantiate a frontend application now php symfony generate app frontend Listing Setup Database Now lets setup our database configuration in config databases yml Open the file in your favorite editor and place the YAML below inside For this test we are simply using a SQLite database Doctrine is able to create the SQLite database at the
22. the blog posts and tags modules It should be located at a url like the following SENSIOLABS X Chapter 2 symfony and Doctrine 14 Listing http localhost symfony1 1Doctrine web frontend_dev php blog_posts http localhost symfony1 1Doctrine web frontend_dev php tags Now with a little configuration of the blog post admin generator we can control the associated blog post tags by checking checkboxes when editing a blog post Open apps frontend modules blog_posts config generator yml and replace the contents with the YAML from below Listing 2 11 generator class sfDoctrineAdminGenerator param model class BlogPost theme default list display title author object actions _edit _delete edit display author title body Tags fields author type input tag title type input tag body type textarea tag params Size 50x10 Tags type doctrine admin check list params through class BlogPostTag Now refresh the blog post list and you will see it is cleaned up a little bit Edit a blog post by clicking the edit icon or the title and you can see below you can check the tags associated to the blog post All of the features you get in Propel work 99 the same way with Doctrine so it should be fairly easy to get the hang of if you are coming from propel sfDoctrinePlugin implements all the same functionality as sfPropelPlugin as well as several additional features which sfPropelPlugin is
Download Pdf Manuals
Related Search
Related Contents
Eurofire GRYM English Instruction MPU1_080708 GX 100-E JAMMER Jr. ギターアンプ VESPA 1 2 - Imaginarium Phonix NL520CSH mobile phone case Caméras thermiques compactes pour la R&D et les applications Pilote automatique en JAVA User Guide Dahle 41630 paper shredder Copyright © All rights reserved.
Failed to retrieve file