簡體   English   中英

找不到映射文件

[英]No mapping file found

我不明白我在哪里錯。 這是拋出的異常

教義\\ Common \\ Persistence \\ Mapping \\ MappingException拋出

找不到類“ Acme \\ Repository \\ Pass \\ Onpassrequest”的名為“ Acme.Repository.Pass.Onpassrequest.dcm.xml”的映射文件。

我的文件夾結構如下

- index.php
- bootstrap.php
/src
  /xml
    -Acme.Repository.Pass.Onpassrequest.dcm.xml
  /Acme
    /Repository
      /Pass
        - Onpassrequest.php
    /Web
      /WebInterface
        - OnPassRequestWebInterface.php

我的bootstrap.php是

<?php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Symfony\Component\HttpFoundation\Request;
// Time zone;
date_default_timezone_set("Europe/Rome");

$loader = require "vendor/autoload.php";

// Create a simple "default" Doctrine ORM configuration for XML
$isDevMode = true;

$config = Setup::createXMLMetadataConfiguration(array("./src/xml"), $isDevMode);

// Database configuration parameters
$dbParams = array(
    'driver'    => 'pdo_mysql',
    'host'      => 'localhost',
    'user'      => 'uuu',
    'password'  => 'ppp',
    'dbname'    => 'ddd',
);

// Obtaining the entity manager
$em = EntityManager::create($dbParams, $config);

我想從./src/Acme/Web/WebInterface/OnPassRequestWebInterface.php文件中調用調用getLayout($ user,$ roles,$ entirelist,$ root,\\ Doctrine \\ ORM \\ EntityManager $ em)的倉庫中的$ roles “管理員”值,因此它將調用getUserLayout

<?php
namespace Acme\Web\WebInterface;

class OnPassRequestWebInterface{

    /**
     * 
     * @param array $user
     * @param array $roles
     * @param array $entirelist
     * @param string $root
     * @param \Doctrine\ORM\EntityManager $em
     */
    public static function getLayout($user, $roles, $entirelist, $root, \Doctrine\ORM\EntityManager $em){

        self::$user = $user;
        self::$roles = $roles;
        self::$entirelist = $entirelist;
        self::$root = $root;
        self::$em = $em;

        if(in_array("administrator", self::$roles)){

            self::getUserLayout();

        } else {

        }


    }


    public static function getUserLayout($period = "P2W"){

        $date = new \DateTime();

        $date->add(new \DateInterval($period));

        $qb = self::$em->createQueryBuilder();

        $qb->select("r")
            ->from("\\Acme\\Repository\\Pass\\Onpassrequest", "r")
            ->where("r.userId = :userId AND r.eventdate >= NOW() AND r.eventdate <= :enddate")
            ->orderBy("r.eventdate", "ASC")
            ->setParameters(array("userId"  =>  self::$user->ID,
                    "enddate"   =>  $date->format("Y-m-d")));

        $query = $qb->getQuery();

        $request = $query->getResult();

        $view = self::renderView("user-next-request.php", array($request), false);

        echo $view;

    }

任何想法? 非常感謝你。

解決了。

$config = Setup::createXMLMetadataConfiguration(array("./src/xml"), $isDevMode);

這配置有相對路徑。 只需添加DIR就可以

$config = Setup::createXMLMetadataConfiguration(array(__DIR__."/src/xml"), $isDevMode);

錯過了。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM