2

我正在开发一个 symfony 项目(也使用 Doctrine),我想在其中一个页面上实现交错搜索,例如:

用户在第一个 select2 框中搜索作者(通过 Ajax 从 DB 中提取数据),一旦选择了一个项目,就会出现第二个 select2 框,称为 title,我想只显示属于所选作者的标题.

这是初始框的控制器端代码(Ajax 和控制器)。有什么想法可以为第二个 select2 构造查询吗?

与查询数据库以获取结果和自动建议项的初始 select2 相关的部分:

public function searchAjaxAuthorAction()
{
    $em = $this->getDoctrine()->getManager();

    $term = $this->get('request')->query->get('term');
    $limit = $this->get('request')->query->get('page_limit', 1);

    $rep = $em->getRepository('StephenPersianArtBundle:Main');

    if($term){
        $entities = $rep->createQueryBuilder('m')
            ->where('m.orig_author LIKE ?1')
            ->orderBy('m.orig_author', 'ASC')
            ->setParameter('1','%'.$term.'%')
            ->getQuery();
    }else{
        $entities = $rep->createQueryBuilder('m')
            ->groupBy('m.orig_author')
            ->getQuery();
    }

    $entities = $entities->execute();

    $resultset = array();

    foreach($entities as $entity){
        if($entity->getOrigAuthor()){
            $resultset[] = array(
                //'id' => $entity->getId(),
                'id' => $entity->getOrigAuthor(),
                'text' => $entity->getOrigAuthor()
            );
        }
    }

    $return = json_encode($resultset);//jscon encode the array
    return new Response($return,200,array('Content-Type'=>'application/json'));
}

还有与此相关的另一部分基本上根据 select2 中选择的项目将数据加载到表中,但我认为这与我遇到的问题无关,因为所有这些都发生在最终查询完成之前。

任何帮助都感激不尽!

4

0 回答 0