我正在做一个学校项目,我想使用 Doctrine 但没有任何框架,因为它们通常太大了。问题是,即使按照文档的配置教程(http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/configuration.html),我也无法集成 Doctrine。拜托,如果有人确实需要设置它并有一些关于 Doctrine 配置(或它在哪个文件中)的提示或想法,我会采取任何措施。提前致谢
问问题
1368 次
1 回答
2
你好吗?这些天我遇到了同样的问题,解决方案是:1)配置一个提到的“boostrap.php”文件,它创建了entityManager、annotationReader和其他类似的东西:
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\AnnotationRegistry;
require_once __DIR__ . '/vendor/autoload.php';
//require_once __DIR__ . "/src/model/persistence/entities";
$paths = array(__DIR__ . "src/model/persistence/entities/");
$isDevMode = false;
$connectionParams = array(
'driver' => 'pdo_mysql',
'user' => 'root',
'password' => 'pwd',
'dbname' => 'db_name',
);
$config = Setup::createConfiguration($isDevMode);
$driver = new AnnotationDriver(new AnnotationReader(), $paths);
// registering noop annotation autoloader - allow all annotations by default
AnnotationRegistry::registerLoader('class_exists');
$config->setMetadataDriverImpl($driver);
$entityManager = EntityManager::create($connectionParams, $config);
2)我使用带有 index.php 作为访问点的 MVC,所以我在开头包含这个“bootstrap.php”,并将 $entityManager 加载到全局数组(比如说 $registry)中,以便可以将它传递给模型(例如在 costructor 中)然后到 dao 以便我可以访问它。
3) 在 dao 中使用 $use $entityManager 来创建和执行查询,如下所示:
<?php
namespace persistence\daos;
require_once "vendor/autoload.php";
include_once __PERSISTENCE_PATH . '/daos/Dao.php';
include_once __PERSISTENCE_PATH . '/entities/UsuarioEntity.php';
include_once __PERSISTENCE_PATH . '/entities/RolUsuarioEntity.php';
use persistence\daos\Dao;
use persistence\daos\DaoImpl;
//use persistence\entities\RolUsuario;
interface UsuarioDao extends Dao {
function findAllRoles();
public function findById($id);
}
class UsuarioDaoImpl extends DaoImpl implements UsuarioDao {
public function __construct($em) {
parent::__construct($em);
}
public function findById($id) {
return parent::findByPrimaryKey('model\persistence\entities\Usuario', $id);
}
public function save($usuario) {
parent::save($usuario);
}
public function delete($usuario) {
parent::delete($usuario);
}
public function findAll() {
return parent::findAllByEntity('model\persistence\entities\Usuario');
}
public function login($email, $pwd) {
$query = $this->entityManager->createQuery("SELECT u FROM model\persistence\entities\Usuario u WHERE u.email = '$email' AND u.senha = '$pwd' ");
return $query->getResult();
}
public function findAllRoles() {
$rolesRepository = $this->entityManager->getRepository('model\persistence\entities\RolUsuario');
return $rolesRepository->findAll();
}
}
在没有任何已知框架的情况下,这件事对我来说效果很好。
这篇文章对这个过程有很大帮助,也看看这个。
希望它对你有用,我的朋友!为我的英语干杯和抱歉 XD!
于 2014-02-12T00:54:32.590 回答