Codeigniter2,Doctrine2,作曲家等。一个巨大的混乱

Posted

技术标签:

【中文标题】Codeigniter2,Doctrine2,作曲家等。一个巨大的混乱【英文标题】:Codeigniter2, Doctrine2, Composer ect. a huge mess 【发布时间】:2014-06-22 19:59:34 【问题描述】:

我整天都在努力让它工作,不幸的是没有成功!我按照学说首页的教程here

所以我得到了 composer 并将所有教义人员下载到一个供应商文件夹中,然后我把这个文件夹放在 codeigniter/application/library 中,然后我用这个代码创建了一个文件 Doctrine.php

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

class Doctrine 

  public $em = null; 

  public function __construct()
   

    include APPPATH.'config/database.php'; 
    require_once __DIR__."/Doctrine/vendor/autoload.php";

    $paths = array(APPPATH.'models/Entity');

    $isDevMode = true;

    // the connection configuration
    $dbParams = array(

        'driver'   => 'pdo_mysql',
        'user'  => $db['local']['username'],
        'password'  => $db['local']['password'],
        'host'  => $db['local']['hostname'],
        'dbname'    => $db['local']['database'],
        'charset'   => $db['local']['char_set'],

    );

    $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
    $entityManager = EntityManager::create($dbParams, $config);

    $this->em = $entityManager;

  


并且一直保存在同一路径codeigniter/application/library

所以我的模型/实体文件夹中有一个实体,如下所示:

/**
 * @Entity
 * @Table(name="site_users")
 */
class Menu

    //...

最后一个代码在控制器中

$this->load->library('Doctrine');
$em = $this->doctrine->em;   
$repository = $em->getRepository('Entity\Menu');

然后我得到了这个错误

Doctrine\Common\Persistence\Mapping\MappingException' with message 'Class 'Entity\Menu' does not exist

基本上我想使用学说,因为它的 Gedmo 树扩展,但仍然可以安装学说,如果有人可以提供帮助,那么扩展如何提前非常感谢。

【问题讨论】:

【参考方案1】:

试试$repository = $em->getRepository('Menu');。您不会将 Menu 推送到命名空间内,因此要么将其放在命名空间内,要么仅使用类名。

【讨论】:

以上是关于Codeigniter2,Doctrine2,作曲家等。一个巨大的混乱的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter2的Doctrine2包装器-开发配置。

CodeIgniter2的Doctrine2 CLI

PHP cli-config.php - doctrine2 + codeigniter2

在 Doctrine 2 / CodeIgniter 2 中找不到实体模型

将 Codeigniter 2 与 Doctrine ORM 2 < PHP v5.2 一起使用

添加相关实体时,Doctrine 对象未设置外键