2010-05-09 4 views
1

MVC에서 ORM 모델을 완전히 이해할 수 없습니다.MVC의 ORM 모델 이해

그래서 저는 symfony를 doctrine과 함께 사용하고 있습니다. 교리 모델이 만들어집니다.

이렇게하면 모델을 만들 필요가 없다는 뜻입니까? 교리 모델은 내가 필요한 유일한 모델입니까?

예 :

어디 교리 모델을 사용하는 코드를 삽입해야합니다.

$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 클래스는 여러분의 모델이며 docs에서 이와 같이 불립니다. 모델은 데이터 지속성을 다루는 클래스가 아니지만 일반적으로 말하면됩니다. 비즈니스 규칙/로직을 포함하는 도메인 특정 클래스가 될 수 있습니다. 예를 들어, 사용자 세션 클래스 apps/yourapp/lib/myUser.class.php을 amodel이라고 부를 수 있습니다. Symfony에서 그렇게 부르는 것을 발견 할 수 없습니다.

그것은 무엇을하고 있는지에 따라 달라집니다

어디 교리 모델을 사용하는 코드를 삽입해야합니다. IT가 컨트롤러에 있거나, Doctrine 기반 클래스 또는 Doctrine을 기반으로하지 않는 다른 모델 클래스에 대해 이야기하고 있는지 여부에 관계없이 다른 모델에있을 수 있습니다. 확실히 아니지만 뷰 :-)

그리고 난 다음 필드를 확인해야하는 위치 (이 데이터베이스에 존재하는 경우,이 이메일은 이메일 등을 확인)?

일반적으로 Symfony에서 이것은 폼 클래스에서 발생합니다. 생성 된 모든 모델 클래스에 대해 연관된 폼과 필터 클래스를 가져옵니다. 양식에는 필드가 있고 필드에는 유효성 검사기가 부착되어 있습니다. 일반적으로 컨트롤러에 양식을 설정 한 다음 데이터를 제공하고 오류를 확인하고 처리합니다. 항목이 있는지 확인하는 측면에서 - 일반적으로 그렇게하지 않습니다. 작업을 시도한 다음 오류를 catch하고 적절한 작업을 수행하십시오. 이미 존재하는 레코드를 추가하려고하면 db (데이터베이스에서 생성 된 중복 키 오류)에서 예외가 발생합니다.

관련 문제