У меня проблемы с поиском, я работаю над проектом, чтобы пользователи могли находить даты доставки на основе почтовых индексов. Существуют почтовые индексы как из Голландии, так и из Бельгии, голландские почтовые индексы - это просто цифры (например, 1000), а бельгийские - с B перед ним (например, B1000). Когда я ищу 1000, он отображает 1000 (голландский почтовый индекс) и B1000 (бельгийский почтовый индекс). Я пытался использовать '=', 'MATCH', '==', 'STRICT' и '===' вместо 'LIKE'. Я надеюсь, что вы, ребята, можете помочь мне с этим вопросом. Заранее спасибо.
Контроллер
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Entity\Nlbelevering;
class PostcodezoekerController extends Controller
{
/**
* @Route ("/nlbe/levering", name="nlbelevering")
*/
public function nlbeleveringHomepage(Request $request){
$nlbelevering = $this->getDoctrine()->getRepository("AppBundle:Nlbelevering")->findAll();
$search = $request->get('q');
$em = $this->getDoctrine()->getManager();
if ($search) {
$nlbelevering = $em->createQuery('Select a FROM AppBundle:Nlbelevering a WHERE a.postcode LIKE :query')
->setParameter('query', '%'.$search.'%');
} else{
$nlbelevering = $em->createQuery('Select a FROM AppBundle:Nlbelevering a WHERE a.postcode LIKE :query')
->setParameter('query', '%'.$search.'%');
}
//Verwijzing naar formulier
return $this->render('nlbe/levering/Nlbelevering.html.twig', [
'nlbelevering' => $nlbelevering->getResult(),
'q' => $search
]);
}
}
?>
Twig
{% extends 'layout/default.html.twig' %}
{% block title %}NL/BE - Levering 30-33{% endblock %}
{% block content %}
<style>
.zoekformulier{
padding: 20px;
margin-top: 20px;
}
</style>
<div class= "zoekformulier">
<form>
<input name="q" value="{{ q }}" placeholder="Zoeken" />
<button type="submit">Zoeken</button>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row">
{% if q == 0 %}
<div class="col-md-12" style="display:none">
{% else %}
<div class="col-md-12">
{% endif %}
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Postcode</th>
<th scope="col">Week 30</th>
<th scope="col">Week 31</th>
<th scope="col">Week 32</th>
<th scope="col">Week 33</th>
</tr>
</thead>
<tbody>
{% for postcode in nlbelevering %}
<tr>
<th scope="row">{{ postcode.postcode }}</th>
<td>{{ postcode.week1 }}</td>
<td>{{ postcode.week2 }}</td>
<td>{{ postcode.week3 }}</td>
<td>{{ postcode.week4 }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Postcode</th>
<th scope="col">Week 34</th>
<th scope="col">Week 35</th>
<th scope="col">Week 36</th>
<th scope="col">Week 37</th>
</tr>
</thead>
<tbody>
{% for postcode in nlbelevering %}
<tr>
<th scope="row">{{ postcode.postcode }}</th>
<td>{{ postcode.week5 }}</td>
<td>{{ postcode.week6 }}</td>
<td>{{ postcode.week7 }}</td>
<td>{{ postcode.week8 }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<hr>
</div>
{% endblock %}
Поиск, без строгого соответствия
РЕДАКТИРОВАТЬ : я решил проблему со строгим соответствием, удалив% перед и после поиска.