[英]how to search array words with Doctrine DQL using bucle
我試圖以這種方式搜索存儲在數組中的單詞:
$dql_cat =' SELECT c
FROM FrontendBundle:Categoria c
WHERE';
foreach ($palabras as $palabra){
if ($palabra === reset($palabras)){
$dql_cat .= ' c.nombre LIKE %'.$palabra.'%';
}
else{
$dql_cat .= ' OR c.nombre LIKE %'.$palabra.'%';
}
}
$dql_cat .= ' ORDER BY c.nombre';
$query = $em->createQuery($dql_cat);
$resultados['categorias'] = $query->getResult();
但是我在查詢中遇到了異常。
查詢結果:
從FrontendBundle:Categoria中選擇c在哪里c.nombre喜歡%carpinteria%或c.nombre喜歡%aluminio%按c.nombre排序
查詢異常:
QueryException:[語法錯誤]行0,列98:錯誤:預期的StateFieldPathExpression | 字符串 InputParameter | 函數返回字符串| AggregateExpression,獲得了“%”
我認為使用queryBuilder避免錯誤更合適,但我不知道如何將其與參數數組一起使用。
我需要一個帶有或不帶有queryBuilder的解決方案。
謝謝。
queryBuilder將如下所示:
$qb = $em->createQueryBuilder();
$qb->select('c')
->from('FrontendBundle:Categoria', 'c');
foreach ($palabras as $palabra){
if ($palabra === reset($palabras)){
$qb->where($qb->expr()->like('c.nombre', $qb->expr()->literal('%' . $palabra . '%')));
}
$qb->orWhere($qb->expr()->like('c.nombre', $qb->expr()->literal('%' . $palabra . '%')));
}
$query = $qb->orderBy('c.nombre', 'ASC')
->getQuery();
$resultados['categorias'] = $query->getResult();
以%$palabra%
開頭,對吧?
foreach ($palabras as $palabra){
if ($palabra === reset($palabras)){
$dql_cat .= " c.nombre LIKE '%".$palabra."%'";
}
else{
$dql_cat .= " OR c.nombre LIKE '%".$palabra."%'";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.