我正在创建一个Repository以将它与Symfony2项目中的Entity一起使用,但我不知道在哪里存储该类。我一直在研究互联网,但我没有任何关于存储存储库的默认命名空间o默认文件夹的信息。
我可以用两种方法“思考”:
使用Entity文件夹:(同一文件夹中的entity和entityRepository)
/项目/束/实体;
使用Repository文件夹:(实体文件夹中的实体和Repository one中的存储库)
/项目/束/实体; /项目/实体/储存库;
有什么标准吗?
答案 0 :(得分:3)
答案 1 :(得分: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定义,但我在实体上使用注释。
答案 2 :(得分:0)
我现在正在阅读有关如何使用Symfony2创建博客的教程,并且他们有一个Repository目录,其中存储所有存储库类,如下所示:src / Blogger / BlogBundle / Repository / BlogRepository.php我不知道如果这是最好的解决方案,但希望它有所帮助。如果你想看一下教程 - 就在这里 - http://tutorial.symblog.co.uk/docs/extending-the-model-blog-comments.html
答案 3 :(得分: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
{
}