当我像上面的示例一样使用 Doctrine Annotation 文件时,该命令php bin/console doctrine:migrations:diff
可以完美运行。
#src/Entity/User.php
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping AS ORM;
/**
* @ORM\Entity(repositoryClass="Repository\UserRepository")
* @ORM\Table(
* schema="data",
* name="ts_user",
* options={"comment":"Utilisateurs de l'application"},
* uniqueConstraints={@ORM\UniqueConstraint(name="uk_usr_email", columns={"usr_email"})}
* )
*/
class User
{
/**
* @ORM\Id
* @ORM\Column(type="integer", name="usr_id")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="text", nullable=true, name="usr_name")
*/
private $name;
/**
* @ORM\Column(type="text", nullable=false, name="usr_email")
*/
private $email;
/**
* @ORM\Column(type="text", nullable=true, name="usr_password")
*/
private $password;
}
由于某些原因(特征、接口),我必须使用学说 yaml 文件来声明我的实体。一旦我用 yaml 文件替换注释,迁移命令就会抛出此错误:
在 OrmSchemaProvider.php 第 41 行:
没有要处理的映射信息
这是我的 yaml 文件:
#src/Resources/config/doctrine/User.orm.yml
App\Entity\User:
type: entity
schema: data
table: ts_user
repositoryClass: Repository\UserRepository
id:
id:
type: integer
column: usr_id
generator:
strategy: AUTO
fields:
name:
type: text
nullable: true
column: usr_name
email:
type: text
nullable: false
column: usr_email
password:
type: text
nullable: true
column: usr_password
uniqueConstraints:
uk_usr_email:
columns: [usr_email]
options:
comment: Utilisateurs de l'application
由于这个错误,我认为它没有找到我的 yaml 文件。它在错误的目录中吗?把这个文件放在哪里?我在源代码中没有看到任何声明我的 yaml 文件目录的内容。我已经在这个目录中尝试过但没有成功:
- 源/实体
- src/资源/config/doctrine/
- src/Resources/config/doctrine/App
- src/Resources/config/doctrine/App/Entity
- src/Resources/config/doctrine/Entity
我究竟做错了什么?
环境:PHP 7.2.3,Symfony 4.1.1(内核:src,环境:开发,调试:真)