Symfony2 存储库标准文件夹或命名空间



我正在创建一个存储库以将其与Symfony2项目中的实体一起使用,但我不知道将类存储在哪里。我一直在互联网上研究,但我没有任何关于默认命名空间 o 默认文件夹的信息来存储存储库。

我可以用两种方法"思考":

  1. 使用实体文件夹:(实体和实体存储库位于同一文件夹中)

    /

    项目/捆绑/实体;

  2. 使用存储库文件夹:(实体文件夹中的实体和存储库 1 中的存储库)

    /

    项目/捆绑/实体;/项目/实体/存储库;

这有什么标准吗?

您可以将它们存储在任何您想要的地方,但官方的 Symfony 书籍使用

Acme/DemoBundle/Repository/

所以我认为这将是更标准的方式

如果Symfony找不到你的仓库,你可以在实体类中使用注释来定义特定的仓库命名空间\class(例如:"Acme\DemoBundle\Entity\Repository\MyEntityRepository"),如下所示:

use DoctrineORMMapping as ORM;
/**
*@ORMEntity(repositoryClass="AcmeDemoBundleEntityRepositoryMyEntityRepository")
*/
class MyEntity { ... }

也许它可以通过YML,XML或PHP定义,但我在实体中使用注释。

我现在正在阅读一个关于如何使用Symfony2创建博客的教程,他们有一个存储库目录,其中存储了所有存储库类,如下所示:src/Blogger/BlogBundle/Repository/BlogRepository.php 我不知道这是否是最好的解决方案,但希望它有所帮助。如果您想查看教程 - 它在这里 - http://tutorial.symblog.co.uk/docs/extending-the-model-blog-comments.html

不希望通过猴子中的扳手,Doctrine 实体生成器在实体文件夹中创建存储库类:

php app/console doctrine:generate:entity

实体:

namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * Test
 *
 * @ORMTable()
 * @ORMEntity(repositoryClass="AppBundleEntityTestRepository")
 */
class Test
{
    /**
     * @var integer
     *
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}

存储 库:

namespace AppBundleEntity;
use DoctrineORMEntityRepository;
/**
 * TestRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class TestRepository extends EntityRepository
{
}

相关内容

  • 没有找到相关文章

最新更新