2015-12-21 21 views
0

的問題是這樣的,我有兩個文件,「學生」和「學校」,學生,有一個字段引用到學校:如何刪除教義ODM對象引用

/** 
* @MongoDB\ReferenceOne(targetDocument="school") 
*/ 
protected $school; 

,有一個學生對象,其中學校領域引用一個學校對象,我想刪除這個引用,在doctrine odm documentation文檔說我可以只做$ student-> setSchool(null),但是當我這樣做時我得到了一個錯誤

Catchable Fatal Error: Argument 1 passed to Student::setSchool() must be an instance of School, null given,

任何人有什麼想法?我誤解了文檔,或者這是不同的情況?謝謝!

+0

設置了'null'會工作null「作爲參數,就像'setSchool(School $ school = null)'**和**您的外鍵列也是可以爲空的。 – Artamiel

+0

@Artamiel謝謝!這解決了我的問題,如果是答案,我會接受。有一件事,文檔說可以爲空:「爲這個選項指定true迫使ODM在數據庫中存儲一個空值,而不是取消設置該字段。」,我的意圖是解除字段,所以我會離開它作爲默認 – user2810081

+0

是的,你也有一點,因爲我有'ORM'而不是'ODM'的經驗,所以往往有一些差異。我可以將我的評論與您的​​評論合併爲一個答案。 – Artamiel

回答

0

在我的評論那麼作爲說明,爲了存儲可爲空值,即通常需要現場接受空的值,並傳遞給setter方法(如果加)的說法,接受null。作爲@OP加入,ODM文件有別的考慮:

nullable - By default, ODM will $unset fields in MongoDB if the PHP value is null. Specify true for this option to force ODM to store a null value in the database instead of unsetting the field.

一種從文檔所提供的報價參考 - 如果你的setter方法接受`@Field