werneckbh
8/12/2015 - 6:55 PM

DoctrineServiceProvider.php

<?php
require 'vendor\autoload.php';
require __DIR__ . '/bootstrap/app.php';
$provider = new App\Providers\DoctrineServiceProvider($app);
$entityManager = $provider->getEntityManager();
return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager);
<?php 

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

class DoctrineServiceProvider extends ServiceProvider 
{
    /**
     * @var EntityManager
     */
	private $entityManager;
	
	public function getEntityManager()
	{
        // Caminho para a pasta de models/entities, está pasta não existe na instalação do Laravel e pode ser criada em "app/Http/Entities"
		$path = array(__DIR__."/../Entities");
        
        // Verifica se a aplicação está com debug
		$debug = isset($_ENV['APP_DEBUG']) ? $_ENV['APP_DEBUG'] : true;
		
		// Array com as configurações de banco de dados
		$database_array = require __DIR__ . '/../../config/database.php';
		
		// Array com a configuração de conexão com o banco de dados
		$database_connection = $database_array['connections'][$database_array['default']];
		
		// Método do Doctrine usado para configurar
		$config = Setup::createAnnotationMetadataConfiguration($path, $debug);
		
		// Retorna uma instância do EntityManager
		return EntityManager::create($database_connection, $config);
	}
	
	/**
	 * Bootstrap the application services.
	 *
	 * @return void
	 */
	public function boot()
	{
		$this->entityManager = self::getEntityManager();
	}
	
	/**
	 * Register the application services.
	 *
	 * @return void
	 */
	public function register()
	{
		$this->app->singleton('Doctrine\ORM\EntityManagerInterface', function($app){
			return $this->entityManager;
		});
	}
}