我正在使用Symfony2和Doctrine ORM,希望以干净的架构实现以下目标:
每次创建新实体时,我都希望保存最终用户选择的“显示名称”,然后根据“显示名称”生成“唯一名称”。
如果我的最终用户想要创建名为“图纸”的3个项目,
(或类似的东西,无论模式如何)
基本实体示例:
/**
* Project.
*
* @ORM\Entity
*/
class Project
{
//...
/**
* @ORM\Column(type="string", length=50, nullable=false)
*/
protected $name_display ;
/**
* @ORM\Column(type="string", length=50, nullable=false, unique=true)
*/
protected $name_unique ;
//...
基本用法示例:
$project = new Project();
$project->setDisplayName('Drawings');
//Around here I would like the Unique name to be generated
$this->getDoctrine()->getManager()->persist($project);
我想到了各种解决方案:
答案 0 :(得分:1)
我会推荐最后的选项 - 服务。它可能需要对您的项目进行更改,但我发现这是使用实体管理通常的crud操作的最佳方法 - 创建,保存,findBySomething ......
EntityManager
这样的服务)