Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orm symfony2中的未知实体命名空间别名_Orm_Symfony_Annotations_Doctrine Orm - Fatal编程技术网

Orm symfony2中的未知实体命名空间别名

Orm symfony2中的未知实体命名空间别名,orm,symfony,annotations,doctrine-orm,Orm,Symfony,Annotations,Doctrine Orm,嘿,我的symfony2项目中有两个包。一个是Bundle,另一个是PatentBundle 我的app/config/route.yml文件是 MunichInnovationGroupPatentBundle: resource: "@MunichInnovationGroupPatentBundle/Controller/" type: annotation prefix: / defaults: { _controller: "MunichInnovationGroupPa

嘿,我的symfony2项目中有两个包。一个是Bundle,另一个是PatentBundle

我的app/config/route.yml文件是

MunichInnovationGroupPatentBundle:
resource: "@MunichInnovationGroupPatentBundle/Controller/"
type:     annotation
prefix:   /
defaults:  { _controller: "MunichInnovationGroupPatentBundle:Default:index" }

MunichInnovationGroupBundle:
resource: "@MunichInnovationGroupBundle/Controller/"
type:     annotation
prefix:   /v1
defaults:  { _controller: "MunichInnovationGroupBundle:Patent:index" }

login_check:
pattern:   /login_check

logout:
pattern:   /logout
我的控制器里有

<?php
namespace MunichInnovationGroup\PatentBundle\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use JMS\SecurityExtraPatentBundle\Annotation\Secure;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Security\Core\SecurityContext;

use MunichInnovationGroup\PatentBundle\Entity\Log;
use MunichInnovationGroup\PatentBundle\Entity\UserPatent;
use MunichInnovationGroup\PatentBundle\Entity\PmPortfolios;
use MunichInnovationGroup\PatentBundle\Entity\UmUsers;
use MunichInnovationGroup\PatentBundle\Entity\PmPatentgroups;
use MunichInnovationGroup\PatentBundle\Form\PortfolioType;
use MunichInnovationGroup\PatentBundle\Util\SecurityHelper;
use Exception;
/**
 * Portfolio controller.
 * @Route("/portfolio")
 */
class PortfolioController extends Controller {
/**
 * Index action.
 *
 * @Route("/", name="v2_pm_portfolio")
 * @Template("MunichInnovationGroupPatentBundle:Portfolio:index.html.twig")
 */
   public function indexAction(Request $request) {
    $portfolios = $this->getDoctrine()
    ->getRepository('MunichInnovationGroupPatentBundle:PmPortfolios')
    ->findBy(array('user' => '$user_id'));

           // rest of the method
  }
我无法找出这个错误 如果有人知道我经常在谷歌上搜索它,请帮助我:(

提前谢谢
500内部服务器错误-或异常

检查您的捆绑逻辑名称(MunichInnovationGroupPatentBundle)。捆绑逻辑名称是捆绑的主要类的名称,例如JobsBundle


并提供您的实体源代码。

请检查您的config.yml

实体经理的
映射
一节中进行了审查
您应该有类似于
MunichInnovationGroupPatentBundle:~

即:

doctrine:
    orm:
        entity_managers:
            defaults:
                mappings:
                    MunichInnovationGroupPatentBundle: ~

当我尝试使用没有核心文件夹名的bandle名称时,我遇到了这个问题。它位于config/security.yml中

在我的例子中,文件夹结构是下一个src/Dp/UserBundle/

我改变了这个 `供应商:

    main:
        entity: { class: UserBundle:User, property: username }`
    main:
        entity: { class: DpUserBundle:User, property: username }`
对此 `供应商:

    main:
        entity: { class: UserBundle:User, property: username }`
    main:
        entity: { class: DpUserBundle:User, property: username }`

所以,复制未知实体名称的名称并搜索项目中的每个条目,检查-它们必须具有文件夹前缀(在我的情况下是Dp)

在Symfony版本2.3.7中,我使用了companysomethingbundle:EntityRequired的名称,例如AcmeBlogBundle:User,它可以工作


自动映射:在config.yml中的orm:下使用了true(默认值)。

如果使用多个实体管理器,并且未在控制器函数中指定实体管理器,则会发生此错误

$em = $this->get('doctrine.orm.//your_entity_manager_name_here//_entity_manager');
$dql   = "SELECT ...";
$query = $em->createQuery($dql);

这对我很有用。

在我的例子中,我在providers下的security.yml中缺少名称空间名称

我有:

实体:{class:AdministratorBundle:AdminUser}

并且需要:

实体:{class:NamespaceAdministratorBundle:AdminUser}

文档说明,只要您的实体位于捆绑包的实体命名空间下,您就可以使用字符串
作为

您的bundle是MunichInnovationGroupBundle因此而不是

->getRepository('MunichInnovationGroupPatentBundle:PmPortfolios')
使用


如果您使用2个或更多实体管理器,则还需要指定管理器 getManager(“您的经理”)


通过添加一些字段,尝试在config.yml文件中更加明确:

orm:
    ...

    mappings:
        MunichInnovationGroupPatentBundle:
                type: annotation
                dir: "MunichInnovationGroupPatentBundle/Controller"
                is_bundle: true
                prefix: MunichInnovationGroup\PatentBundle
                alias: MunichInnovationGroupPatentBundle
        [more mappings..]

请检查config.yml+AppKernel.php

config.yml必须是

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
或将自动映射替换为

    mappings:
        StoreShopBundle: ~
有关更多信息,请检查以下内容:

在AppKernel.php中 不要忘记检查捆绑包是否已激活:

        new MunichInnovationGroup\PatentBundle\MunichInnovationGroupPatentBundle(),

打开你的app\config.yml,必须是

orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
replace to
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
              MunichInnovationGroupPatentBundle: ~

如果名称空间正确,请尝试检查pmportfolions实体。另一种可能的解决方案是:当我将查询更改为$em=$this->getDoctrine()->getEntityManager('pp_userdat');em->->->getRepository('MunichInnovationGroupPatentBundle:pmportfolions')->findBy(数组('user'=>'$user\u id'));然后它在ORM致命错误中给了我一些代理错误:条令\ORM\ProxyFactory::getProxy()[function.require]:打开所需的“C:/wamp/www/idp/app/cache/dev/doctor/ORM/Proxies\MunichInnovationGroupPatentBundleEntityUmUsersProxy.php”(include_path=”;C:\php\pear')在C:\wamp\www\idp\vendor\doctrine\lib\doctrine\ORM\Proxy\ProxyFactory.php第85行检查app/cache文件夹权限中,可能会有帮助,我建议您使用此错误创建另一个问题,如果您不能快速解决此问题,那么使用自动映射还不够吗:true?我在删除SF中的默认自动映射=true时遇到了此问题2.3应用程序的配置,以便在SF2引发自动映射不是有效子级的异常后添加stof/doctrineextensionsbundle映射。将自动映射重新添加为“映射”节点的同级(默认值的子级,而不是“orm”的直接子级)以上解决了问题。这个答案解决了我的问题。SF,通过该控制器查看名称空间,并正确启动生成实体。答案中的完整描述:我忘记了捆绑包的根类在其名称的开头包含名称空间。谢谢!其他示例:
公司\MyBundle
的根类是
CompanyBundle
,而不是
MyBundle
。我正要添加一个这样的响应,这种方法对我有效,但直到我将
别名:
更改为与
MunichInnovationGroupPatentBundle
不同的任何内容,比如说:
别名:MunichInnovation
这个答案应该移到上面。我几乎看到了圣霍普,然后我尝试了这个解决方案,它奏效了。先生,你刚刚救了我一命!过去两天我一直在为此发愁。
    mappings:
        StoreShopBundle: ~
        new MunichInnovationGroup\PatentBundle\MunichInnovationGroupPatentBundle(),
orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
replace to
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
              MunichInnovationGroupPatentBundle: ~