2013-08-18 2 views
0

Я работаю с базой данных с сущностью типа Store. В каждом магазине есть часы работы для каждого дня недели, определенного в объекте OpeningHour. В магазине может быть не более 7 объектов ExtendedHour. Это прекрасно, так как я могу контролировать это в бизнес-логике.Doctrine ArrayCollection фиксированный размер

Однако часы работы магазина могут или не могут быть указаны явно. Это означает, что, когда я обновляю часы работы, мне сначала нужно проверить, есть ли часы работы для указанного определенного дня. Если они существуют, мне нужно обновить, иначе мне нужно добавить новый объект OpeningHour в ArrayCollection.

Чтобы получить часы для магазина я делаю следующее: Теперь

$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