Symfony 4 表关系在命名策略中不起作用



>我已经创建了现有数据库表的两个实体,这些表使用表关系的学说约定,我需要关联表才能工作,实体通过查询数据来工作,但不是在它们之间。

表名"Articulos"

class Articulos
{
    /**
     * @ORMId()
     * @ORMColumn(type="integer")
     */
    private $ID_Articulo;
     /**
     * @ORMColumn(name="ID_Clasificacion_Articulo", type="integer")
     * @ORMManyToOne(targetEntity="ClasificacionesArticulos")
     */
    private $ID_Clasificacion_Articulo;
.......
Table name "ClasificacionesArticulos"
class ClasificacionesArticulos
{
     /**
     * @ORMColumn(name="ID_Clasificacion_Articulo", type="integer")
     * @ORMId()
     * @ORMOneToMany(targetEntity="Articulos", mappedBy="ID_Clasificacion_Articulo")
     */
    private $ID_Clasificacion_Articulo;
    /**
     * @ORMColumn(type="string", length=150)
     */
    private $Codigo;
    /**
     * @ORMColumn(type="string", length=150)
     */
    private $Nombre;
.........

当我咨询任何实体时,返回的结果没有关系的子项。我想这是因为字段的名称id不使用名称策略,但是我无法在数据库中更改它们,我必须根据要求进行调整。

如果有人有想法,我非常感谢你

这可以通过实现自定义原则命名策略来实现。在Symfony实体中,使用camelCase以避免命名的任何问题。但是,如果您需要特定的表名称,请按照指南进行操作

你必须实现NamingStrategy类:

class CustomNamingStrategy implements NamingStrategy
{
}

通过在 config/services.yaml 的末尾添加以下内容将其注册为服务:

app.naming_strategy.custom:
    class: AppServiceCustomNamingStrategy
    autowire: true

然后通过编辑 config/packages/doctrine.yaml 来指定命名策略,如下所示:

naming_strategy: app.naming_strategy.custom

我相信你正在寻找propertyToColumnName方法,正如教义所说

如果您有数据库命名标准,则所有表名都应为 以应用程序前缀为前缀,所有列名都应较低 在这种情况下,您可以通过实现命名轻松达到此类标准 策略。

相关内容

  • 没有找到相关文章

最新更新