6

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

我可以用两种方法“思考”:

  1. 使用Entity文件夹:(entity和entityRepository在同一个文件夹)

    /项目/捆绑/实体;

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

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

这有什么标准吗?

4

4 回答 4

3

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

Acme/DemoBundle/存储库/

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

于 2012-08-13T10:14:16.033 回答
1

如果 Symfony 无法找到您的存储库,您可以在实体类中使用注释来定义特定的存储库命名空间\类(例如:“Acme\DemoBundle\Entity\Repository\MyEntityRepository”),如下所示:

use Doctrine\ORM\Mapping as ORM;

/**
*@ORM\Entity(repositoryClass="Acme\DemoBundle\Entity\Repository\MyEntityRepository")
*/
class MyEntity { ... }

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

于 2015-01-25T22:48:33.060 回答
0

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

于 2012-08-13T09:57:53.303 回答
0

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

php app/console doctrine:generate:entity

实体:

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Test
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="AppBundle\Entity\TestRepository")
 */
class Test
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


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

存储库:

namespace AppBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * TestRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class TestRepository extends EntityRepository
{
}
于 2015-08-06T15:19:30.430 回答