【问题标题】:Symfony2 acces doctrine in entity实体中的 Symfony 访问原则
【发布时间】:2015-01-30 02:49:03
【问题描述】:

有我的实体:

实体

namespace Catalog\WebBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

class ComCompany
{

    private $entityManager;

    public function setEntityManager(EntityManager $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public function getCmpCategory()
    {
         return  $customer = $this
                ->entityManager
                ->getRepository('CatalogWebBundle:ComCategory')
                ->findOneBycmpCat('123123');
    }


}

Services.yml

services:
catalog_web.comcompany:
    class: Catalog\WebBundle\Entity\ComCompany
    calls:
        - [ setEntityManager, [ @doctrine.orm.entity_manager ]]

我收到错误:

InvalidArgumentException:没有扩展能够加载“catalog_web.comcompany”的配置(在 /home/katalogas/domains/ekatalogas.eu/public_html/src/Catalog/WebBundle/DependencyInjection/../Resources /config/services.yml)。寻找命名空间“catalog_web.comcompany”,没有找到

我不明白 services.yml 配置文件中有什么问题。

【问题讨论】:

  • 请注意你做错了。实体只是实体的定义,没有逻辑。这个 getCmpCategory 方法应该放在 RepositoryClass - symfony.com/doc/current/book/…
  • 是的。将实体定义为服务是没有意义的。 Doctrine 2 对服务容器一无所知。虽然错误信息令人费解。

标签: php symfony doctrine-orm doctrine


【解决方案1】:

您的 .yml 间距错误。应该是:

services:
   catalog_web.comcompany:
      class: Catalog\WebBundle\Entity\ComCompany
      calls:
          - [ setEntityManager, [ @doctrine.orm.entity_manager ]]

【讨论】:

  • 那只是复制/粘贴的事情。我确信他的 services.yml 有正确的缩进。有一天我需要弄清楚如何粘贴带有前导空格的代码。
  • 我同意。原因是将实体定义为服务。
  • @PiotrGalas 如何将实体定义为服务我在 Symfony 文档中没有找到关于此的内容,您可以举个例子吗?
  • 这是因为您不应该将实体定义为服务
  • @TomaszMadeyski 请提供简短示例如何将实体定义为服务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 2013-10-09
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 2017-01-12
相关资源
最近更新 更多