如何在Doctrine 2中使用Proxies

时间:2016-01-27 19:01:13

标签: php doctrine-orm proxy doctrine

我有以下配置

 $isDevMode = \Config::get("DEBUG");
self::$config = Setup::createAnnotationMetadataConfiguration(array(APP_PATH.'models'), $isDevMode, APP_PATH.'proxies');

// naming strategy
$namingStrategy = new \DoctrineExtensions\CustomNamingStrategy();
self::$config->setNamingStrategy($namingStrategy);

// database configuration parameters
self::$conn = array(
    'url' => \Config::get('DB_DSN')
);

self::$evm = new \Doctrine\Common\EventManager;

// Table Prefix
$tablePrefix = new \DoctrineExtensions\TablePrefix(\Config::get('TABLE_PREFIX'));
self::$evm->addEventListener(Events::loadClassMetadata, $tablePrefix);
self::$entityManager = EntityManager::create(self::$conn, self::$config, self::$evm);

从我理解的Doctrine 2文档中,这应该是在APP_PATH.'proxies'文件夹中生成代理类(当$isDevMode为真时。这应该自动发生。)

不幸的是它不会自动生成类。我不知道是什么原因。但是,我使用以下命令php vendor/bin/doctrine orm:generate-proxies手动生成了这些类。生成类并且已存在于文件夹中。为了尝试代理类,我写了以下几行:

$qq = $this->repositoryPages
->createQueryBuilder('p')
->select('p.title')
->where('p.id = :id')
->setParameter('id', 6)
->getQuery()->getResult();
var_dump($qq);

不幸的是,我返回一个关联数组

array (size=1)
0 => 
   array (size=1)
     'title' => string 'Welcome' (length=7)

有什么问题以及我需要做些什么来获取对象?

1 个答案:

答案 0 :(得分:0)

我想你忘了添加一个setter

self::config->setAutoGenerateProxyClasses(true);

我忘了添加例子:

$this->repositoryPages
    ->createQueryBuilder('p')
    ->where('p.id = :id')
    ->setParameter('id', 6)
    ->getQuery()->getResult();
  

Query builder documentation