Doctrine orm Doctrine2-两个联接上的关联映射
我有以下协会: 餐厅1:n餐饮1:n供应 现在我想有一个方法来获得今天所有可用的膳食。在实体中是否有这样做的方法?我考虑过CriteriaAPI,但由于第二个问题,我不知道如何处理它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
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()只返回我选择的食物,而不是餐厅的所有食物。但现在我有另一个问题。我怎样才能选择所有有今天饭菜的餐厅?我将编辑我的问题以显示我的尝试。