2010-05-09 109 views
1

我無法完全理解MVC中的ORM模型。瞭解MVC中的ORM模型

所以我使用symfony的原則。教條模型被創建。

這是否意味着我不必創建任何模型?教條模型是我需要的唯一模型嗎?

我應該在哪裏把它使用原則機型代碼:

如。

$phoneIds = array(); 

$phone1 = new Phonenumber(); 
$phone1['phonenumber'] = '555 202 7890'; 
$phone1->save(); 

$phoneIds[] = $phone1['id']; 

$phone2 = new Phonenumber(); 
$phone2['phonenumber'] = '555 100 7890'; 
$phone2->save(); 

$phoneIds[] = $phone2['id']; 

$user = new User(); 
$user['username'] = 'jwage'; 
$user['password'] = 'changeme'; 
$user->save(); 

$user->link('Phonenumbers', $phoneIds); 

該代碼應該在控制器還是在另一個模型中?

我應該在哪裏驗證這些字段(檢查它是否存在於數據庫中,該電子郵件是電子郵件等)?

有人可以請說明這一點。

謝謝。

回答

2

這是否意味着我不必 創建任何模型?是學說 模型我需要的唯一模型?

這取決於您對模型的定義。就Symfony而言 - Doctrine類是你的模型,在文檔中被稱爲類。一般而言,模型不僅僅是處理數據持久性的類。它們可以是包含業務規則/邏輯的任何特定於域的類。因此,例如,您的用戶會話類apps/yourapp/lib/myUser.class.php可以稱爲amodel,通過您不會在Symfony中找到它。

我應該在哪裏把它使用原則機型代碼:

這取決於什麼youre做。 IT可能在控制器中,或者它可能在另一個模型中,無論我們是在談論一個基於Doctrine的類,還是一些不基於Doctrine的其他模型類。絕對不是在視圖,雖然:-)

,並在那裏我應該驗證這些字段(檢查它是否在 數據庫中存在,在郵件中的電子郵件等)?

那麼通常在Symfony中,這發生在窗體類中。對於生成的每個模型類,它都會獲得關聯的表單和過濾器類。表單具有附加驗證器的字段和字段。您通常在控制器中設置表單,然後爲其提供數據,並驗證並處理錯誤。在檢查項目是否存在方面 - 你通常不會那樣做。你嘗試操作,然後你發現錯誤並做適當的事情。如果你試圖添加一個已經存在的記錄,將會拋出一個異常(來自你的db生成的重複鍵錯誤)。