#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
его в пространство имен, поэтому либо поместите его в пространство имен, либо используйте только имя класса.