trr*_*rrm 5 php mapping orm symfony doctrine-orm
我正在读这篇文章:
http://danielribeiro.org/yes-you-can-have-low-coupling-in-a-symfony-standard-edition-application/
作者提到,该项目可以采用这种方法:
src/
??? Vendor/
??? Product/
??? Bundle
??? BlogBundle/
??? ForumBundle/
??? SiteBundle/
??? Controller/
??? IndexController.php
??? Resources/
??? views/
??? index.html.twig
??? ProductSiteBundle.php
??? Entity
??? User.php
??? Repository
??? UserRepository.php
??? Service
??? UserPasswordRetrievalService.php
Run Code Online (Sandbox Code Playgroud)
所以我按照这篇文章结束了这样的事情:
src/
??? Product/
??? Bundle
??? SiteBundle/
??? Controller/
??? IndexController.php
??? Resources/
??? views/
??? index.html.twig
??? ProductSiteBundle.php
??? Entity
??? User.php
Run Code Online (Sandbox Code Playgroud)
现在Symfony看不到我的User.php作者没有提到我是否必须添加任何额外的代码才能使这个工作,现在我收到这个错误:
MappingException: The class 'Product\Entity\User' was not found in the chain configured namespaces OtherNameSpaces
Run Code Online (Sandbox Code Playgroud)
UPDATE
所以我删除了现有的代码.并做了这样的事情:
src/
??? Product/
??? Bundle
??? SiteBundle/
??? Controller/
??? IndexController.php
??? Resources/
??? views/
??? index.html.twig
??? ProductSiteBundle.php
??? Entity
??? User.php
Run Code Online (Sandbox Code Playgroud)
user.php的
namespace Product\Entity;
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
然后
php app/console doctrine:schema:update --force //No Metadata Classes to process.
Run Code Online (Sandbox Code Playgroud)
似乎Symfony根本不知道那个文件夹.有什么地方我可以让symfony查看该文件夹吗?
Nic*_*ich 11
一个好的博客文章由的Jakub Zalas介绍如何映射住束之外的实体.
您需要手动添加doctrine查找映射信息的位置,如下所示.
这使得映射信息也可用于doctrine:schema:update命令.配置更改后,请不要忘记清除缓存.
# app/config/config.php
doctrine:
orm:
# ...
mappings:
Acme:
type: annotation
is_bundle: false
dir: %kernel.root_dir%/../src/Acme/Entity
prefix: Acme\Entity
alias: Acme
Run Code Online (Sandbox Code Playgroud)
您现在可以像这样访问存储库(因为别名定义):
$entityManager->getRepository('Acme:YourEntity');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4775 次 |
| 最近记录: |