我正在尝试创建一个查询,它为我提供自上次调用此函数以来销售的所有商品。然后,这些项目将按照每个网上商店进行分类,并且会收到一封电子邮件,说明当天销售的内容。我还想借此机会参加这些网络商店可以加入的所谓类别。一个类别得到他自己的" webstore"所以在我们的例子中,我们可以轻松访问订单和其他功能,这是类似的。这样他们就可以收到一封电子邮件,显示已在所有网上商店销售的商品。
然后我想显示树枝,然后将其转换为pdf并作为附件发送并通过电子邮件发送。这个我几乎都有工作。我遇到的问题是我可以将这些项目放在子订单中并按网店显示。
webstore1: 披萨x2 汉堡x3
webstore2: 奶酪x2 披萨x2
public function getWebstoresBatch($latestDate)
{
$em=$this->getDoctrine()->getManager();
$webstoreRepository = $em->getRepository(BaseController::WEBSTORE_REPOSITORY);
$q = $webstoreRepository->createQueryBuilder('w')
->select('w, s, o' )
->setParameter('latestDate', $latestDate)
->innerJoin('w.sales', 's')
->where('w.sendBatchMail = true')
->andWhere("s.date >= :latestDate");
if('w.subscription_type == 4'){ //if webstore is a category-webstore
$q->innerJoin('s.subOrders', 'o')
->innerJoin('o.webstore', 'ew')
->groupBy('ew.name');
}
$q = $q->getQuery();
$res = $q->getResult();
return $res;
}
我尝试用1个查询完成所有操作,希望不要有太多重复的代码。但是我被困在这个阶段。每当我尝试运行此操作时,我会收到有关groupBy的以下错误:
SQLSTATE[42803]: Grouping error: 7 ERROR: column "r0_.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT r0_.id AS id_0, r0_.name AS name_1, r0_.description A.
我不确定我所尝试的内容是否可行,如果我应该将其设为2个函数或2个查询,我会这样做。