2013-08-18 3 views
0

저는 Store 유형의 엔터티가있는 데이터베이스로 작업하고 있습니다. 각 상점에는 OpeningHour 엔티티에 정의 된 요일에 대한 영업 시간이 있습니다. 상점에는 최대 7 개의 OpeningHour 엔티티 만있을 수 있습니다. 비즈니스 로직에서이를 제어 할 수 있기 때문에 괜찮습니다.Doctrine ArrayCollection 고정 크기

그러나 저장소의 영업 시간은 명시 적으로 정의 될 수도 있고 정의되지 않을 수도 있습니다. 즉, 영업 시간을 업데이트 할 때 먼저 해당 특정 일의 영업 시간이 이미 설정되어 있는지 확인해야합니다. 존재하지 않으면 업데이트해야합니다. ArrayCollection에 새로운 OpeningHour 엔티티를 추가해야합니다.

내가 다음을 수행 매장의 영업 시간을 효율적으로 활용하려면 다음

$openingHours = $store->getOpeningHours(); 

$openingHours 변수가 지금은없는 더 7 이상의 엔티티의 컬렉션을 가져야한다 (그러나 작을 수 있습니다).

$values = array(
    array(
     'day' => "Monday", 
     'start' => "00:00:00", 
     'end' => "00:00:00", 
    ) 
); 

$values 데이터 구조는 7 일 각각 최대 7 개 항목을 가질 수 있습니다

내가이 같은 형태의 간단한 데이터 구조를 가지고 영업 시간을 업데이트합니다. 내 OpeningHour 엔티티는이 데이터 구조와 동일한 특성을 갖습니다.

내 질문에 특정 구체 이름을 가진 엔티티가 이미 존재하는 경우 $openingHours ollection 내에서 쉽게 확인할 수 있습니까?

답변

1

Store 내부 :

public function hasOpeningHoursOnDay($day) { 
    return $this->openingHours->filter(function($key, $element) use ($day) { 
     return $element->getDay() === $day; 
    })->count() > 0; 
} 
+0

이이 일을 가장 정직 방법이 될 것으로 보인다. 감사! – Luke