2013-11-21 50 views
0

我有以下代碼設置:的Symfony2 - NoSuchPropertyException

表格/ CompanyType:

->add('employeeCollection', 'entity', array(
     'class' => 'xyBundle:Person', 
     'property' => 'name', 
     'by_reference' => false 
    )) 

實體/公司:

/** 
* @ORM\ManyToMany(targetEntity="Person", inversedBy="employmentCollection") 
*/ 
private $employeeCollection; 

public function addEmployeeCollection(Person $employee) { 
    return $this->addEmployee($employee); 
} 

實體/人:

/** 
* @ORM\ManyToMany(targetEntity="Company", mappedBy="employeeCollection") 
*/ 
private $employmentCollection; 

由於最新的更新o f Symfony2編輯公司並嘗試更新時出現新錯誤。 (在最新的Symonfy2更新之前,一切正常)。

奇怪的是相結合的方法和屬性(員工得到employoo):

Neither the property "employeeCollection" nor one of the methods "addEmployooCollection()", "setEmployeeCollection()", "__set()" or "__call()" exist and have public access in class "xyBundle\Entity\Company". 
+0

如果您複製了直接從源代碼錯誤,它說「addEmployooCollection()」。你在某個地方有錯字嗎? – Sehael

+0

我搜索了我的完整項目「employoo」,但沒有發現任何與之匹配的項目。 – Nino

回答

2

如果有人有相同的錯誤,我發現這個問題。

Symfony2有一個PropertyAccessor,它檢查給定的屬性名是否是一個數組。如果是,它會檢查給定的setter或加法器/去除器是否可用。

PropertyAccessor使用StringUtil作爲幫助程序類來標識和連接方法名稱。

在這個類中有一個檢查名字的方法。如果名稱中包含'ee',請將其替換爲'oo'。

供應商/ symfony中/ symfony中/ src目錄/ Symfony的/分量/ StringUtil.php上線193:

// Convert teeth to tooth, feet to foot 
if (false !== ($pos = strpos($plural, 'ee')) && strlen($plural) > 3) { 
    return substr_replace($plural, 'oo', $pos, 2); 
} 

因此,使用$員工,而不是$ employeeCollection的解決了這個問題..