Php 条令:生成:实体-无法重新声明<;函数名>;
我有一个现有的数据库,我使用Php 条令:生成:实体-无法重新声明<;函数名>;,php,symfony,doctrine,Php,Symfony,Doctrine,我有一个现有的数据库,我使用原则:映射:导入成功地将其导入symfony2捆绑包 这些表使用下划线命名。其中一个表有两列: - ab_desc - abd_esc 导入后,属性将转换为camelCase,如下所示 - $abDesc - $abdEsc 这是绝对正确的,因为PHPs变量是区分大小写的 但是如果我现在尝试使用原则:generate:entities 条令试图创建以下方法: - function getabDesc() - function getabdEsc() 这导致了
原则:映射:导入
成功地将其导入symfony2捆绑包
这些表使用下划线命名。其中一个表有两列:
- ab_desc
- abd_esc
导入后,属性将转换为camelCase,如下所示
- $abDesc
- $abdEsc
这是绝对正确的,因为PHPs变量是区分大小写的
但是如果我现在尝试使用原则:generate:entities
条令试图创建以下方法:
- function getabDesc()
- function getabdEsc()
这导致了错误
cannot redclare "getabDesc()"
由于PHPs函数不区分大小写
我现在可以自己编写getter和setter了,但我想知道是否有更好的解决方案,比如告诉doctrine使用下划线属性或类似的东西。您可以执行以下操作:
/**
* @ORM\Entity(table="ab")
*/
class Ab {
/**
* @ORM\Column(name="ab_desc")
*/
protected $abDesc;
/**
* @ORM\Column(name="abd_desc")
*/
protected $abdDesc;
public getAbDesc() {
return $this->abDesc;
}
public getAbdDesc() {
return $this->abdDesc;
}
}
您可以执行以下操作:
/**
* @ORM\Entity(table="ab")
*/
class Ab {
/**
* @ORM\Column(name="ab_desc")
*/
protected $abDesc;
/**
* @ORM\Column(name="abd_desc")
*/
protected $abdDesc;
public getAbDesc() {
return $this->abDesc;
}
public getAbdDesc() {
return $this->abdDesc;
}
}
我想到的一件事是忘记getter和setter,将属性公开,而不是私有。@frankbee原则不适用于公共属性。你可能是对的Gerry。我总是使用getter和setter以及逻辑属性名。我想到的一件事是忘记getter和setter,将属性设置为公共属性而不是私有属性。@frankbet原则不适用于公共属性。你可能是对的Gerry。我总是使用getter、setter和逻辑属性名。我不明白你的意思。我的属性是
$abDesc
和$abDesc
。名字相同,但大写字母和小写字母的用法不同。我总是创建getter和setter。我总是遵循这个简单的规则:get+大写的属性名和set+大写的peoperty名。在anotations上,我可以在表中设置字段名,这个名称可以与属性名完全不同。我不明白你的意思。我的属性是$abDesc
和$abDesc
。名字相同,但大写字母和小写字母的用法不同。我总是创建getter和setter。我总是遵循这个简单的规则:get+大写的属性名和set+大写的peoperty名。在anotations中,我可以在表中设置字段名,该名称可以与属性名完全不同。