symfony - 如何使学说生成的列名称在学说2 symfony中以驼峰式大小写显示?

标签 symfony doctrine-orm entities

我有一个在命令行中使用学说生成的实体。如下 -

/**
 * @var string
 *
 * @ORM\Column(name="COUNTRY_ID", type="string", length=2)
 */
private $cOUNTRYID;

在数据库中,列名为COUNTRY_ID,SQL 结果将给出 assoc。以 COUNTRY_ID 作为键、其名称作为值的数组。

我的要求是 SQL 结果的显示名称为驼峰式大小写。例如COUNTRY_ID应该是countryId。学说文件中是否有可用的配置来执行此操作?

最佳答案

您必须实现命名策略才能获取驼峰式自动生成的列名称,如 explained in Doctrine documentation .

创建一个类来获取列名称的驼峰命名法,CamelCaseNamingStrategy.php:

<?php
class CamelCaseNamingStrategy implements NamingStrategy
{
    public function classToTableName($className)
    {
        return 'cc_' . substr($className, strrpos($className, '\\') + 1);
    }
    public function propertyToColumnName($propertyName)
    {
        return $propertyName;
    }
    public function referenceColumnName()
    {
        return 'id';
    }
    public function joinColumnName($propertyName, $className = null)
    {
        return strtolower($propertyName) . ucwords($this->referenceColumnName());
    }
    public function joinTableName($sourceEntity, $targetEntity, $propertyName = null)
    {
        return strtolower($this->classToTableName($sourceEntity)) . ucwords($this->classToTableName($targetEntity));
    }
    public function joinKeyColumnName($entityName, $referencedColumnName = null)
    {
        return strtolower($this->classToTableName($entityName)) . ($referencedColumnName ?: ucwords($this->referenceColumnName()));
    }
}

然后将这个新类注册为服务,并将其添加到您的 config.yml 中:

orm:
    #...
    entity_managers:
        default
            naming_strategy: my_bundle.camel_case_naming_strategy.default

关于symfony - 如何使学说生成的列名称在学说2 symfony中以驼峰式大小写显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40904550/

相关文章:

php - 优化内存资源以响应大查询

symfony - 教义查询崩溃

php - 如何使用 Doctrine 通过 JOIN 填充附加字段

java - 类<?实现 X> : How can I define a variable that is an instance of this

ajax - Symfony2 发送表单 ajax

javascript - 在 Twig SYMFONY 302 中渲染 Controller 时的重定向

database - 如何解决这个SQLSTATE[HY000] [2002] no connection could be because the target machine actively refused

entity-framework-4 - 是否有 EF4 Fluent API 语法的引用?

Linq 到实体参数化构造函数 Datetime

unit-testing - 如何对使用类型提示的函数进行单元测试