- Notifications
You must be signed in to change notification settings - Fork 2
Install from Scratch
I have composer installed:
$ composer --version Composer version 1.0-dev (07c644ac229a21df80180598d8bb9aaba232eecb) 2015-02-03 12:51:10 Create a Laravel4 project:
composer create-project laravel/laravel test-d2b-l5 Edit composer.json:
"require": { ...., "opensolutions/doctrine2bridge-l5": "2.4.*" }, ... Then run:
composer update Add the service providers to your Laravel application in config/app.php. In the 'providers' array add:
'Doctrine2Bridge\Doctrine2CacheBridgeServiceProvider', 'Doctrine2Bridge\Doctrine2BridgeServiceProvider', You'll need to publish and edit the configuration files:
./artisan vendor:publish --provider "Doctrine2Bridge\Doctrine2CacheBridgeServiceProvider" ./artisan vendor:publish --provider "Doctrine2Bridge\Doctrine2BridgeServiceProvider" You now need to set database and cache options:
- the default cache in
config/cache.phpoffileis fine. - the default namespace in
config/d2bcache.phpis also fine. - all the defaults in
config/d2bdoctrine.phpare fine. - we only need a MySQL database to be configured in
config/database.php:
Assuming you have configured a test database in MySQL as follows:
CREATE DATABASE IF NOT EXISTS `d2btest`; GRANT ALL ON d2btest.* TO `d2btest`@`127.0.0.1` IDENTIFIED BY 'd2btest'; FLUSH PRIVILEGES;Edit config/database.php to match:
return [ // ... 'default' => 'mysql', // ... 'connections' => [ // ... 'mysql' => [ 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'd2btest', 'username' => 'd2btest', 'password' => 'd2btest', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, ], ] // ... ];Spin up Laravel's tinker environment - an interactive interpreter with Laravel's environemtn loaded:
./artisan tinker We'll then show the cache working by:
- loading a value that does not exist (returns false)
- setting that value
- attempt to load it again from the cache
Here's what you should type and expect:
$ ./artisan tinker Psy Shell v0.3.3 (PHP 5.6.5 — cli) by Justin Hileman >>> var_dump( D2Cache::fetch( 'abcdef' ) ); bool(false) => null >>> var_dump( D2Cache::save( 'abcdef', 'qwerty' ) ); bool(true) => null >>> var_dump( D2Cache::fetch( 'abcdef' ) ); string(6) "qwerty" => null >>> Create a sample XML schema:
mkdir -p database/xml cat >database/xml/Entities.SampleEntity.dcm.xml <<ENDXML <?xml version="1.0"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="Entities\SampleEntity" repository-class="Repositories\Sample"> <id name="id" type="integer"> <generator strategy="AUTO"/> </id> <field name="name" type="string" length="255" nullable="true"/> </entity> </doctrine-mapping> ENDXMLNow create the entities, proxies and repositories (NB: you may need to do this twice to update the optimized class):
./artisan d2b:generate:entities composer dump-autoload ./artisan d2b:generate:proxies composer dump-autoload ./artisan d2b:generate:repositories ./artisan optimize You can now (drop) and create the database with:
./artisan d2b:schema:drop --commit ./artisan d2b:schema:create --commit Now, spin up tinker again and create some objects:
for( $i = 0; $i < 50; $i++ ) { $se = new Entities\SampleEntity; $se->setName( rand( 0, 100 ) ); D2EM::persist( $se ); } D2EM::flush(); echo count( D2R::r( 'SampleEntity' )->findAll() ) . ' objects created.';Here's an example session:
>>> for( $i = 0; $i < 50; $i++ ) { ... $se = new Entities\SampleEntity; ... $se->setName( rand( 0, 100 ) ); ... D2EM::persist( $se ); ... } => null >>> D2EM::flush(); => null >>> echo count( D2R::r( 'SampleEntity' )->findAll() ) . ' objects created.'; 50 objects created.⏎ => null