我为Doctrine创建了yaml配置。当我尝试doctrine orm:generate-entities
时,它会创建带有getter和getter的getter和setter的php文件。因此,is_public
字段会转换为setIsPublic
和getIsPublic
方法。这是有益的。如何获得set_is_public
和get_is_public
?我可以手动编辑生成的php文件,但我不知道更改架构时会发生什么。
答案 0 :(得分:3)
你可以使用choose a naming strategy Doctrine用来生成项目:
使用命名策略,您可以自动提供规则 生成数据库标识符,列和表名称时 没有给出表/列名称。此功能有助于减少 映射文档的详细程度,消除重复性噪声(例如: 表_)。
对于您的具体情况,我认为您正在寻找类似的内容:
$namingStrategy = new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy(CASE_LOWER);
$configuration()->setNamingStrategy($namingStrategy);
链接的主题继续向您展示如何编写自己的自定义命名策略。
如果你正在使用Symfony,那就是even easier(就像大多数事情都与Symfony有关,但这只是我的观点)来自config.yml
:
doctrine:
orm:
naming_strategy: doctrine.orm.naming_strategy.underscore
答案 1 :(得分:1)
Symfony's coding standards鼓励Symfony用户使用 camelCase :
命名约定
使用camelCase,而不是下划线,变量, 函数和方法名称,参数
答案 2 :(得分:0)
个人建议 - 不要通过doctrine orm生成实体:generate-entities。
使用纯PHP创建类。为什么?
Orm在privates上使用反射与数据库进行通信。你不需要生成setter和getters。我建议您使用工厂或构造函数等设计模式来实现您的目标。装饰者也应该工作正常。
<?php
class MyClass
{
private $id;
private $name;
public function __construct(int $id, string $name)
{
$this->id = $id;
$this->name = $name;
}
}
$ camelCase不仅是Symfony对代码标准的推荐。它基于PSR2。我非常推荐使用PSR2,代码变得干净和标准化。
标准ORM命名策略是 $ camelCase 私有var到 snake_case 列名。如果您想要更改它,请考虑:other naming stategies