有没有办法定义方法名manuall而不是生成的方法名?
让我们展示一个关于以下实体的例子(使用来自条令的自动生成方法):
<?php
namespace Application'Entity;
use Doctrine'ORM'Mapping as ORM;
/**
*
* @ORM'Entity(repositoryClass="Application'EntityRepository'Zone")
* @ORM'Table(name="zones")
*
*/
class Zone
{
/**
* @var ZoneRecordNS[]
* @ORM'OneToMany(targetEntity="Application'Entity'ZoneRecordNS", mappedBy="zone", cascade={"all"})
* @ORM'OrderBy({"ownername" = "ASC"})
*/
protected $recordsns;
/**
* Get recordsns
*
* @return 'Doctrine'Common'Collections'Collection
*/
public function getRecordsns()
{
return $this->recordsns;
}
/**
* Add recordsn
*
* @param 'Application'Entity'ZoneRecordNS $recordsn
*
* @return Zone
*/
public function addRecordsn('Application'Entity'ZoneRecordNS $recordsn)
{
$this->recordsns[] = $recordsn;
return $this;
}
/**
* Remove recordsn
*
* @param 'Application'Entity'ZoneRecordNS $recordsn
*/
public function removeRecordsn('Application'Entity'ZoneRecordNS $recordsn)
{
$this->recordsns->removeElement($recordsn);
}
}
原则2编写方法"addRecordsn",但我希望将其命名为"addRecordNS"。
如果我重写自动生成的方法并强制执行"orm:generate entities--generate methods=1",则条令将再次重新创建自动生成方法。。
有没有可能创建一个注释或其他东西,迫使条令使用用户编写的方法,而不是自动生成的方法?
更新我现在也尝试过重命名。
带有"$recordNS":
/**
* @var ZoneRecordNS[]
* @ORM'OneToMany(targetEntity="Application'Entity'ZoneRecordNS", mappedBy="zone", cascade={"all"})
* @ORM'OrderBy({"ownername" = "ASC"})
*/
protected $recordNS;
/**
* Add recordN
*
* @param 'Application'Entity'ZoneRecordNS $recordN
*
* @return Zone
*/
public function addRecordN('Application'Entity'ZoneRecordNS $recordN)
{
$this->recordNS[] = $recordN;
return $this;
}
/**
* Remove recordN
*
* @param 'Application'Entity'ZoneRecordNS $recordN
*/
public function removeRecordN('Application'Entity'ZoneRecordNS $recordN)
{
$this->recordNS->removeElement($recordN);
}
/**
* Get recordNS
*
* @return 'Doctrine'Common'Collections'Collection
*/
public function getRecordNS()
{
return $this->recordNS;
}
和"$recordNSs":
/**
* @var ZoneRecordNS[]
* @ORM'OneToMany(targetEntity="Application'Entity'ZoneRecordNS", mappedBy="zone", cascade={"all"})
* @ORM'OrderBy({"ownername" = "ASC"})
*/
protected $recordNSs;
/**
* Add recordNSs
*
* @param 'Application'Entity'ZoneRecordNS $recordNSs
*
* @return Zone
*/
public function addRecordNSs('Application'Entity'ZoneRecordNS $recordNSs)
{
$this->recordNSs[] = $recordNSs;
return $this;
}
/**
* Remove recordNSs
*
* @param 'Application'Entity'ZoneRecordNS $recordNSs
*/
public function removeRecordNSs('Application'Entity'ZoneRecordNS $recordNSs)
{
$this->recordNSs->removeElement($recordNSs);
}
/**
* Get recordNSs
*
* @return 'Doctrine'Common'Collections'Collection
*/
public function getRecordNSs()
{
return $this->recordNSs;
}
因此,在我的变量名延迟中,似乎不可能获得正确的人类可读方法名:-(.
遗憾的是,也没有注释来强制使用手动键入的方法名。
Doctrine使用singularize
方法从属性名称中获取方法名称。因此,属性名称是方法名称的基础。所以,如果你想要带大写字符的NS,你也应该这样写你的房产名称。附加的"s"使其成为复数,并被剥离为单个元素。这就是为什么你得到的是addRecordsn
,而不是你想要的addRecordns
(检查s
和n
的顺序)
protected $recordNSs;
会给你addRecordNS
和removeRecordNS
或使用
protected $records;
哪个会给你addRecord
和removeRecord
或使用
protected $NSRecords;
它将为您提供addNSRecord
和removeNSRecord