我喜欢学说,但是我在映射/注释方面有一些问题。开始时,我使用了映射文件。然后我转换为注释。现在我要o创建自定义存储库类,所以我在这里阅读时做过:http://symfony.com/doc/current/book/doctrine.html#custom-repository-clasees。
不幸的是,现在我有一个错误:
No mapping file found named 'srcVendorProductBundleResourcesconfigdoctrine/SynchronizationSettingRepository.orm.yml' for class 'VendorProductBundleEntitySynchronizationSettingRepository'.
当然我没有这个文件,因为我不再使用映射了。我添加了:
* @ORMEntity(repositoryClass="VendorProductBundleEntitySynchronizationSettingRepository")
父母和再生实体。我通过命令PHP应用程序/控制台学说重新生成:生成:实体vendorproductuctbundle,仍然什么也没有。主体和学说Meadata Cache清楚。
这是一个YML,我想从我想再生成自定义存储库:
VendorProductBundleEntitySynchronizationSetting:
type: entity
table: synchronization_setting
repositoryClass: VendorSynchronizationSettingEntitySynchronizationSettingRepository
indexes:
id_product:
columns:
- id_product
id:
id:
type: integer
nullable: false
unsigned: true
comment: ''
id: true
generator:
strategy: IDENTITY
fields:
open:
type: string
nullable: true
length: 1
fixed: true
comment: ''
default: '0'
internet:
type: string
nullable: true
length: 1
fixed: true
comment: ''
default: '0'
manyToOne:
idProduct:
targetEntity: Product
cascade: { }
mappedBy: null
inversedBy: null
joinColumns:
id_product:
referencedColumnName: id
orphanRemoval: false
lifecycleCallbacks: { }
这是一个存储库类:
<?php
// src/Acme/StoreBundle/Entity/ProductRepository.php
namespace VendorProductBundleEntity;
use DoctrineORMEntityRepository;
class SynchronizationSettingRepository extends EntityRepository
{
public function findAllOrderedByName()
{
return $this->getEntityManager()
->createQuery(
'SELECT p FROM AcmeStoreBundle:Product p ORDER BY p.name ASC'
)
->getResult();
}
}
我认为添加 @ORMEntity
做得很好,因为完整的 .php
类文件在运行 doctrine:generate:entities
后立即被覆盖。您需要将repositotyClass
改为YML
文件。
如果您善待注释,则这些.yml
文件(实际上是config
中的整个doctrine
目录)是没有用的,是用于生成基于Annotaion的实体的中间文件。
另一件事:教义认为您具有名称为"存储库"的实体。
您可以向我们展示YML
文件的内容吗?如果您没有它(如您所说),那么生成实体将是不可能的。您总是可以直接生成基于Annotaion的实体(不需要YML
Intermediates)