这篇文章主要介绍了symfony查询方法,结合实例形式总结分析了createquery与getquery查询数据的具体使用技巧,需要的朋友可以参考下
本文实例讲述了symfony查询方法。分享给大家供大家参考,具体如下:
1. createquery的写法
$sql = 'select count(distinct(g.goodsid)) from appbundle:goodsindex g where g.status = :status';
$params = array(
'status' => goodsindex::status_normal,
);
if (!empty($keywords)) {
$params['keywords'] = "%{$keywords}%";
$sql .= ' and g.keywords like :keywords ';
}
if (!empty($warehouseidlist)) {
$params['warehouseidlist'] = $warehouseidlist;
$sql .= " and g.warehouseid in :(warehouseidlist)";
}
$goodsnum = $this->entitymanager->createquery($sql)->setparameters($params)->getsinglescalarresult();
个人总结::是指占位符的意思,防止sql注入。所以把所有需要的参数做成数组$params里面。
2. getquery的写法
$orderby = 'p.'.$searchoptions['orderby'];
$repository = $this->entitymanager
->getrepository('appbundle:goodsindex');
$query = $repository->createquerybuilder('p');
$query->select('distinct(p.goodsid)');
$query->where('p.keywords like :keywords')
->setparameter('keywords', "%{$searchoptions['keywords']}%")
->andwhere('p.status = :status')
->setparameter('status', goodsindex::status_normal)
->orderby($orderby, $searchoptions['order'])
->setfirstresult($pagination['pagesize'] * ($pagination['page'] - 1))
->setmaxresults($pagination['pagesize']);
if (!empty($searchoptions['warehouseidlist'])) {
$query->andwhere($query->expr()->in('p.warehouseid', $searchoptions['warehouseidlist']));
}
$goodsindexlist = $query->getquery()->getresult();
以上就是总结symfony中查询的方法介绍的详细内容。