是否可以使用 EntityManagerInterface class 基于两个外键创建查询?
Is it possible to create a query based on two foreign keys using the EntityManagerInterface class?
我正在尝试创建一个包含将 return 提供的两级参考的查询。
我已经在使用 createQueryBuilder 方法,无论如何我的查询看起来非常好。但我仍然有这个问题:
[Semantical Error] line 0, col 47 near 'CarManufacturer': Error: Class App\Entity\Offer has no field or association named model.CarManufacturer
//$manufacturer - string from GET
public function getOffersByManufacturer($manufacturer):
{
return $this->em->getRepository(Offer::class)
->createQueryBuilder('p')
->select('p')
->andWhere('p.model.CarManufacturer = :manufacturer')
->setParameter('manufacturer', $manufacturer)
->getQuery()
->execute();
}
无论如何Table offer 有一个到模型的外键(ManyToOne),下一个模型(实体)有一个到 CarManufacturer(实体)的外键(ManyToOne)
我想使用 spring
得到这样的东西
public List<Offer> getOffersByManufacturer(int manuacturerId):
{
String jpql = "select o from Offer o where o.carModel.manufacturer.id = :id order by o.title";
TypedQuery<Offer> query = em.createQuery(jpql, Offer.class);
query.setParameter("id", manuacturerId);
return query.getResultList();
}
替换:
->andWhere('p.model.CarManufacturer = :manufacturer')
与:
->innerJoin('p.model', 'm')
->andWhere('m.CarManufacturer = :manufacturer')
或者:
use Doctrine\ORM\Query\Expr\Join;
->innerJoin('p.model', 'm', Join::WITH, 'm.CarManufacturer = :manufacturer')
我正在尝试创建一个包含将 return 提供的两级参考的查询。
我已经在使用 createQueryBuilder 方法,无论如何我的查询看起来非常好。但我仍然有这个问题:
[Semantical Error] line 0, col 47 near 'CarManufacturer': Error: Class App\Entity\Offer has no field or association named model.CarManufacturer
//$manufacturer - string from GET
public function getOffersByManufacturer($manufacturer):
{
return $this->em->getRepository(Offer::class)
->createQueryBuilder('p')
->select('p')
->andWhere('p.model.CarManufacturer = :manufacturer')
->setParameter('manufacturer', $manufacturer)
->getQuery()
->execute();
}
无论如何Table offer 有一个到模型的外键(ManyToOne),下一个模型(实体)有一个到 CarManufacturer(实体)的外键(ManyToOne)
我想使用 spring
得到这样的东西public List<Offer> getOffersByManufacturer(int manuacturerId):
{
String jpql = "select o from Offer o where o.carModel.manufacturer.id = :id order by o.title";
TypedQuery<Offer> query = em.createQuery(jpql, Offer.class);
query.setParameter("id", manuacturerId);
return query.getResultList();
}
替换:
->andWhere('p.model.CarManufacturer = :manufacturer')
与:
->innerJoin('p.model', 'm')
->andWhere('m.CarManufacturer = :manufacturer')
或者:
use Doctrine\ORM\Query\Expr\Join;
->innerJoin('p.model', 'm', Join::WITH, 'm.CarManufacturer = :manufacturer')