>我已经创建了现有数据库表的两个实体,这些表使用表关系的学说约定,我需要关联表才能工作,实体通过查询数据来工作,但不是在它们之间。
表名"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
方法,正如教义所说
如果您有数据库命名标准,则所有表名都应为 以应用程序前缀为前缀,所有列名都应较低 在这种情况下,您可以通过实现命名轻松达到此类标准 策略。