【发布时间】:2018-02-01 21:28:47
【问题描述】:
我目前正在使用 Symfony 4。 我用 ORM 和注释写了一个实体
#src/Entity/User.php
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
*
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, unique=true)
*/
private $email;
/**
* @ORM\Column(type="string", length=255)
*/
private $motdepasse;
/**
* @ORM\Column(type="string", length=255, unique=true)
*/
private $username;
/**
* @ORM\Column(type="string", length=255)
*/
private $nom;
...
我使用“php bin/console dictionary:generate:entities App\Entity\User”生成实体。不幸的是,它在名称空间“App\Entity”的 php 文件“src/App/Entity/User.php”中生成了一个实体。但是,由于 psr-4 规则,命名空间应该是“App\App\Entity”。如果我添加第二个“应用程序”,我会遇到与存储库和控制台生成相关的问题。如果我让一个“应用程序”,Symfony 认为命名空间是错误的。 这是我的服务配置: config/services.yml 这是我的学说配置: config/packages/doctrine.yml
我已经在各处(文档、教程、stackoverflow 等)寻找了 2 天的答案。与 Symfony 3 相比,Symfony 4 确实发生了变化。 谢谢您的帮助。 (任何链接都可以帮助我)
【问题讨论】:
-
在 Symfony 4 中使用 "bin/console make:entity User" 可能需要使用 "composer require maker" 安装新的 maker 包,是的,在 S4 中有很多小改动。
-
看到这个github.com/doctrine/DoctrineBundle/issues/729,我想会回答你的问题。
-
感谢 Cerad,但很遗憾。我用这个命令创建了我的实体(带有 ORM 注释的实体)。
-
谢谢 dlondero。我将按照我在此 URL 中找到的内容:创建一个 symfony 3.3 安装原则:映射:从现有数据库中导入复制并粘贴实体文件到我的新 symfony 4 项目中(在每个项目中将“AppBundle”更改为“App” ) 新 symfony 4 项目中的学说:schema:update --force
-
如果您需要使用现有数据库,这很有意义。如果您这样做只是为了自动创建 getter/setter,您可以使用适当的 IDE 来实现。
标签: php symfony namespaces doctrine entity