原则2实体列方法名称


Doctrine 2 Entity Column Method Name

有没有办法定义方法名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(检查sn的顺序)

protected $recordNSs;

会给你addRecordNSremoveRecordNS

或使用

protected $records;

哪个会给你addRecordremoveRecord

或使用

protected $NSRecords;

它将为您提供addNSRecordremoveNSRecord