Hello I shall like creating a system of search on my blog except that it does not work! I made this code I have an error of this type:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
If you have a solution for me help that shall be nice thank you very much! my code :
/**
* @Route("/recherche")
* @param Request $request
* @return Response
*/
public function search(Request $request): Response
{
$info = $this->getDoctrine()->getRepository(InfoMore::class)->findByInfo(2);
$form = $this->createForm(SearchType::class);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$contentOfUsers = $form->getData();
$contentOfUsers['name'];
$search = $this->getDoctrine()->getRepository(Articles::class)->findBysearch($contentOfUsers);
return $this->render('backOffice/search/resultat.html.twig', [
'resultatOfSearch' => $search,
'info' => $info
]);
}
return $this->render('backOffice/search/search.html.twig', [
'form' => $form->createView()
]);
}
my formType :
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, [
'attr' => [
'maxlength' => '30',
'minlength' => '3',
'label' => 'nom'
],
'constraints' => [ new Assert\Length([
'min' => '2',
'minMessage' => 'Votre nom doit contenir au minimum {{ limit }} caractères.',
'max' => '30',
'minMessage' => 'Votre nom ne doit pas dépasser {{ limit }} caractères.'
])]
])
;
}
My Repository:
/**
* @param $contentOfUsers
* @return array
* @throws \Exception
*/
public function findBysearch(array $contentOfUsers) {
$query = $this->createQueryBuilder('r')
->select('r')
->where('r.nameArticle LIKE :chaine')
->setParameter(':chaine', $contentOfUsers)
->getQuery();
return $query->getResult();
}
my views :
{{ form_start(form) }}
{{ form_label(form) }}
{{ form_widget(form) }}
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
{{ form_end(form) }}
and resultat :
{% for search in resultatOfSearch %}
{{ search.resultatOfSearch }}
{% endfor %}
Try this syntax in findBysearch
$queryBuilder = $this->createQueryBuilder('r');
$queryBuilder->select('r')
->where($queryBuilder->expr()->like('r.nameArticle', ':chaine'))
->setParameter('chaine', '%' . $contentOfUsers . '%');
$query = $queryBuilder->getQuery();
return $query->getResult();