我有以下配置
$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)
有什么问题以及我需要做些什么来获取对象?
答案 0 :(得分:0)
我想你忘了添加一个setter
self::config->setAutoGenerateProxyClasses(true);
我忘了添加例子:
$this->repositoryPages
->createQueryBuilder('p')
->where('p.id = :id')
->setParameter('id', 6)
->getQuery()->getResult();