Doctrine orm Doctrine2-两个联接上的关联映射

Doctrine orm Doctrine2-两个联接上的关联映射,doctrine-orm,Doctrine Orm,我有以下协会: 餐厅1:n餐饮1:n供应 现在我想有一个方法来获得今天所有可用的膳食。在实体中是否有这样做的方法?我考虑过CriteriaAPI,但由于第二个问题,我不知道如何处理它 class Restaurant { public function getTodaysMeals() { $criteria = Criteria::create() ->where(Criteria::expr()->eq('availabilitie

我有以下协会:

餐厅1:n餐饮1:n供应

现在我想有一个方法来获得今天所有可用的膳食。在实体中是否有这样做的方法?我考虑过CriteriaAPI,但由于第二个问题,我不知道如何处理它

class Restaurant {
    public function getTodaysMeals() {
        $criteria = Criteria::create()
            ->where(Criteria::expr()->eq('availabilities.date', '2015-10-20'));

        return $this->getMeals()->matching($criteria);
    }
}
==编辑===

这样的话,我只会得到今天有饭吃的餐馆,但我也想要没有饭吃的餐馆

class RestarantRepository extends EntityRepository {
    public function find() {
        $this->createQueryBuilder('restaurant');
            ->addSelect('meals')
            ->addSelect('availabilities')
            ->leftJoin('restaurant.meals', 'meals')
            ->leftJoin('meals.availabilities', 'availabilities')
            ->where('availabilities.date', ':date');
            ->setParameter('date', '2015-10-21');

        return $queryBuilder->getQuery()->getResult();
    }
}

创建一个respository方法,连接所有实体并使用where或criteria表达式通常我会这样做,但我必须在餐厅列表中显示餐点。没有区别吗?好的,我不知道,如果您只在存储库中选择一个子集,您可以迭代一个子集。所以$restaurant->getFounds()只返回我选择的食物,而不是餐厅的所有食物。但现在我有另一个问题。我怎样才能选择所有有今天饭菜的餐厅?我将编辑我的问题以显示我的尝试。