如何解决使用查询构建器symfony 2的Like语句不会选择所有字符串
所以我有一个包含以下代码的objectRepository:
public function searchObjects($data,$page = 0,$max = NULL,$em,$baseUrl,$locale)
{
try {
$lastDate = new \DateTime('last day of this month');
$lastDate = $lastDate->format('Y-m-d') . ' 23:59:59';
$query = isset($data['query']) && $data['query'] ? $data['query'] : null; null;
$qb = $this->_em->getRepository('AuditConfigBundle:Objects')->createqueryBuilder('o');
$qb->addSelect("o.id,o.objectCode,o.objectName,o.objectType,o.objectAdresse,o.objectTown")
->addSelect("o.objectPostalCode,o.objectNSEE,o.objectNbOutlet,o.objectETR,o.objectLOT")
->addSelect("o.objectGeom,o.objectGrouping1,o.objectGrouping2,o.objectStatus,o.objectTypeSupport")
->addSelect("o.objectTypePropertySupport,o.objectInfo");
if ($query) {
$qb->andWhere('o.objectCode like :objectCode')
->setParameter('objectCode',"%" . $query . "%")
->orWhere('o.objectName like :objectName')
->setParameter('objectName',"%" . $query . "%")
->orWhere('o.objectType like :objectType')
->setParameter('objectType',"%" . $query . "%")
->orWhere('o.objectTown like :objectTown')
->setParameter('objectTown',"%" . $query . "%")
->orWhere('o.objectPostalCode like :objectPostalCode')
->setParameter('objectPostalCode',"%" . $query . "%")
->orWhere('o.objectLOT like :objectLOT')
->setParameter('objectLOT',"%" . $query . "%")
->orWhere('o.objectETR like :objectETR')
->setParameter('objectETR',"%" . $query . "%")
->orWhere('o.objectGrouping1 like :objectGrouping1')
->setParameter('objectGrouping1',"%" . $query . "%")
->orWhere('o.objectGrouping2 like :objectGrouping2')
->setParameter('objectGrouping2',"%" . $query . "%");
}
if ($max) {
$preparedQuery = $qb->orderBy('o.id','DESC')->getQuery()
->setMaxResults($max)
->setFirstResult($page * $max);
} else {
$preparedQuery = $qb->orderBy('o.id','DESC')->getQuery();
}
$result = $preparedQuery->getArrayResult();
$countData = count($result);
return $this->transformArrayObject($result,$locale);
} catch (Exception $e) {
return [];
}
}
这是我的控制器代码
public function paginateAction(Request $request)
{
$str = fopen('log.txt',"w");
$em = $this->getDoctrine()->getManager();
$objectRepository = $em->getRepository('AuditConfigBundle:Objects');
$locale = $request->getLocale();
$baseUrl = $request->getSchemeAndHttpHost() . $request->getBaseUrl();
$page = $request->get('page');
$currentPage = $page ? (int)$page : 1;
$query = $request->get('query');
fwrite($str,"query" . $query . PHP_EOL);
$perPage = $request->get('perpage');
$perPage = $perPage ? $perPage : 10;
$offset = ($perPage * $currentPage) - $perPage + 1;
$search = $request->get('search');
$order = $request->get('order');
$baseUrl = $request->getSchemeAndHttpHost() . $request->getBaseUrl();
$filters = [
'query' => $query,// 'order' => $order,];
$draw = $request->get('draw');
/**
* @var ObjectManager $objectmanager
*/
$objectmanager = $this->get('audittab.manager.object');
$data = $objectmanager->searchObjects($filters,$currentPage,$perPage,$locale,$baseUrl);
$objectCount = $objectmanager->getNb();
$pages = ceil($objectCount / $perPage);
if ($currentPage > $pages) {
$currentPage = 1;
}
/**
* @var ObjectManager $objectmanager
*/
$output = [
'draw' => intval($draw),'currentPage' => $currentPage,'pages' => $pages,'perPage' => $perPage,'data' => $data,'datacount' => $objectCount,// 'datacount' => $objectmanager->searchObjects($filters,$baseUrl)['count'],'offset' => $offset,];
return new JsonResponse($output);
}
function getData(page,perpage) {
$.ajax({
url: "{{ path('object_paginates') }}?page=" + page + "&perpage=" + perpage,type: 'POST',dataType: 'json',delay: 250,data:{
query: $('.search').val().toLocaleLowerCase(),},success: function (data) {
currpage = page
elmntsperpage = perpage
nbrPages = data.pages
datacount = data.datacount
fillTable(data.data,perpage)
setPagination(page,data.pages)
var startelement = parseInt(data.offset)
var endelement = parseInt(data.offset) + parseInt(elmntsperpage) - 1
var endelement = endelement > data.datacount ? data.datacount : endelement
document.getElementById('sample-table-2_info').innerText = 'Showing ' + startelement + ' to ' + endelement + ' of ' + data.datacount + ' entries'
$(".disabled").removeAttr("onclick");
console.log(data)
console.log(datacount)
}
})
}
$(".search").on("keyup",function () {
var perpage = $('#records').children("option:selected").val()
getData(1,perpage)
// var value = $(this).val().toLowerCase();
// $("#sample-table-2 tr:gt(0)").filter(function () {
// $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
// });
});
这里的问题是搜索结果无法正常工作,它仅返回前5个字符,但不能使用超过5个字符 请帮忙
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。