2010-01-20 73 views
5

我正在使用Symfony與Doctrine。如何知道關係中的對象是否存在於數據庫中

我定義了兩個班,學生,關係一一對應的。

每個學生關係到一個人,但不是每個人具有學生的關係。

當我打電話......

$person->getStudent(); 

......我總是和對象,無論一些人的沒有一個學生。我怎麼知道它不存在(數據庫中存在學生)?

謝謝。

回答

9

我覺得

$person->getStudent()->exists(); 

應該這樣做。至少根據Doctrine API documentation
你得到的對象可能是某種空記錄。

+0

@Felix的感謝!但是,如果記錄不存在時返回'null'會更好嗎?不是嗎?謝謝你的幫助。 – kiewic 2010-01-20 15:01:18

+0

@Kiewic:是的,我也有這個問題,並期望一個'null'值而不是一個對象。如果您發現有用的答案,請接受它。 – 2010-01-20 15:42:18

2

有一個很新的方法(我認爲自從Doctrine 1.2以來):$person->hasReference("Student");返回一個布爾值,以確定是否實際存在一個與該人相關聯的學生,不管它是否已經保存在數據庫中,並且根據需要而不創建新的學生記錄。 這個調用可以適用於應用程序邏輯不關心相關對象的持久性的情況,例如,而在一個交易(我猜)。 希望有點幫助,歡呼聲,RAPHAEL

2

您還可以使用Doctrine_Record::relatedExists(),這是怎樣的一個補充,以hasReference()

你使用這樣的:

if ($person->relatedExists('Student')) 
+0

是的,使用'$ person-> relatedExists('Student')'方法比'$ person-> Student-> exists();好得多,因爲後者實際上會在內存中創建一個新的「空白」對象,如果你調用'$ person-> save();'將其附加到'$ person',並在/如果你調用'$ person-> save – Julien 2017-01-20 11:36:37

相關問題