나는 세 개의 테이블을 가지고 부모 개체가 있는지 여부를 모르는 개체를 저장하는 방법은 무엇입니까?
Business:
id
name
Office:
id
name
business_id
Employee:
id
name
office_id
직원의
는 외래 키로 office_id하고 사무실은 외래 키로 business_id있다.각 개체와 관련된 도메인 개체/개체와 각 개체와 관련된 데이터베이스 매퍼 개체가 있습니다.
이제는 비즈니스 이름, 사무실 이름 및 직원 이름으로 제공 될 때 새 직원을 삽입하는 방법은 무엇입니까? 처음
나는 논리가 뭔가 같이해야한다 그림 :
$businessMapper = new businessMapper();
$business = $businessMapper->findBusinessByName($business_name);
if ($business == false) {
$business = new businessEntity(array(
'businessName' => $business_name,
));
$businessMapper->save($business);
}
$officeMapper = new officeMapper();
$office = $officeMapper->getOfficeByName($office_name, $business);
.......etc.......
그러나 나는 새로운 사업을 저장해야하는 경우 그것은 그래서 내가 사무실이나 직원이 방법이 없다는 것을 깨달았 그 (것)들을 얻기 위하여 낭비한 질문. 그래서 나는 if/else 구조를 만들어야한다고 생각했습니다.
get business entity by business_name
if ($business == false) {
create business entity
save business entity
create office entity
save office entity
create employee entity
save employee entity
} else {
get office entity by office_name + business_id
if (office == false) {
create office entity
save office entity
create employee entity
save employee entity
} else {
......etc......
}
}
그러나 너무 많은 중복 논리가 있으며 매우 확장 성/지저분합니다.
그럼 어떻게해야합니까?
두 번째로 논리는 어디로 가야합니까? 그것은 직원의 매퍼로 가야합니까? 또는 '직원 추가'작업의 컨트롤러 또는 새 모델이 있어야합니까?
그래서 상관없이 프레임 워크 환경 :)의 반응 주시기 바랍니다 내 프레임 워크로 젠드를 사용하고 있지만이 문제는 모든 MVC 스타일의 구조에 적용 생각
그것은이다 좋은 질문이지만 MVC와는 아무런 관련이 없다고 생각합니다. 또한 다른 어떤 것보다 데이터 맵퍼에 관한 것입니다. 실제로 누군가가 자신의 앱을 일부 신에게 끔찍한 ORM 방지 패턴으로 부딪히지 않는 질문을 보는 것이 좋습니다. 그래서 +1. – rdlowrey
datamapper 태그를 추가했습니다 : – Mark