Codeigniter2, Doctrine2, Composer и т. Д. огромный беспорядок

#php #codeigniter #orm #doctrine-orm

#php #codeigniter #orm #доктрина-orm #doctrine-orm

Вопрос:

Весь день я пытался заставить его работать, к сожалению, безуспешно! Я следую руководству по домашней странице doctrine здесь

итак, я получил composer и загрузил весь персонал doctrine в папку поставщика, затем я взял эту папку и поместил ее codeigniter/application/library , а затем создал файл Doctrine.php с помощью этого кода:

 use DoctrineORMToolsSetup;
use DoctrineORMEntityManager;

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

итак, у меня есть объект в моей папке models / Entity, который выглядит следующим образом:

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

и последний код находится в contoller

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

и тогда я получаю эту ошибку

 DoctrineCommonPersistenceMappingMappingException' with message 'Class 'EntityMenu' does not exist
  

В принципе, я хочу использовать doctrine, потому что его расширение дерева Gedmo, но все же могу установить doctrine что насчет расширения, если кто-то может помочь, было бы большое спасибо заранее.

Ответ №1:

Попробуйте $repository = $em->getRepository('Menu'); . Вы не можете помещать Menu его в пространство имен, поэтому либо поместите его в пространство имен, либо используйте только имя класса.