Doctrine ArrayCollection固定大小

时间:2013-08-18 05:49:22

标签: doctrine-orm arraycollection

我正在使用类型为Store的实体的数据库。每个商店都有一个在OpeningHour实体中定义的每周的每一天的营业时间。商店最多只能有7个OpeningHour实体。这很好,因为我可以在业务逻辑中控制它。

但是,商店的营业时间可能会或可能不会明确定义。这意味着当我更新开放时间时,我首先需要检查是否已经定义了特定日期的开放时间。如果它们存在,我需要更新,否则我需要向OpeningHour添加新的ArrayCollection实体。

要获得商店的营业时间,请执行以下操作:

$openingHours = $store->getOpeningHours();

$openingHours变量现在应该有不超过7个实体的集合(但可能更少)。

要更新营业时间,我有一个简单的数据结构,如下所示:

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

{7}数据结构每7天最多可包含7个条目。我的$values实体与此数据结构具有相同的属性。

我的问题是,如果已经存在具有特定日期名称的实体,我如何在OpeningHour ollection中轻松检查?

1 个答案:

答案 0 :(得分:1)

Store内:

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