symfony – 带有可选参数的复杂Doctrine2查询
发布时间:2020-12-15 08:46:07 所属栏目:Java 来源:网络整理
导读:想知道使用可选参数查询数据库的最佳方法.例如,我有一个搜索,其名称,位置,价格,排序等* 我应该在应用程序的模型和控制器级别上做什么(我使用的是Symfony2 btw)? 我的想法是在模型中动态构建DQL,并通过控制器将序列化参数传递给它,如: #controller$res = $r
想知道使用可选参数查询数据库的最佳方法.例如,我有一个搜索,其名称,位置,价格,排序等*
我应该在应用程序的模型和控制器级别上做什么(我使用的是Symfony2 btw)? 我的想法是在模型中动态构建DQL,并通过控制器将序列化参数传递给它,如: #controller $res = $repo->search($serializedData); #model/repo->search() $data = expand($serializedData); $dql = ''; if($data['sortby']) $dql .= ..... 有什么建议? 此代码用于演示目的.它不是有点有效:) 解决方法
简而言之,使用
Doctrine 2 query builder.
答案会更长 #Controller // Say if the data was a form submission $result = $repo->search($form_data) 然后在您的模型中检查表单数组以查找可能的排序键.例如,如果您正在搜索某些文章. #Article Repository public function search($form_data) { $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('Article') ->from('SomeBundle:Article'); if($form_data['title']) { $qb->where($qb->expr()->like('Article.title',$qb->expr()->literal('%'.$form_data['title'].'%'); } //For subsequent filters use $qb->andWhere() // You could do more here like pagination,or different hydration (return object or array) return $qb->getQuery()->getResult(); } 查看我链接的文档以获取更多信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |