1
하나의 Doctrine 2 쿼리에서 LIKE 와일드 카드를 사용하여 일치시키려는 용어가 있습니다. 데이터베이스가 SQL이고 DQL을 사용하고 있지만 쿼리 빌더 솔루션이 좋을 것입니다. 내 현재 쿼리 설정은 이것이다 :Doctrine & Symfony 2.1에서 좋아하는 배열로 쿼리하기
foreach($textterms as $text)
{
$parameters[] = '%-'.$text.'-%';
}
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT p FROM Post p WHERE p.searchfield IN LIKE (:text) ORDER BY p.datetime DESC'
)->setParameter('text', $parameters);
$posts = $query->getResult();
하지만 심포니 오류를 얻을
인가 "QueryException : 리터럴 예상 얻었다 '('[구문 오류] 라인 0, COL 62 : 오류" 교리 가능이 쿼리
안녕하세요, 귀하의 쿼리 빌더 솔루션을 가지고 놀았습니다. \t \t \t foreach ($ texterms as $ text) {$ query-> orWhere ('p.searchfield LIKE?'. $ i ++); $ parameters [] = '% -' . $ text. '- %';} 하지만 어떤 이유로 질의가 심포니 로거에서 처리되는 것처럼 보이지만 게시물 배열에는 아무 것도 없습니다. – Joe
어떻게 -> setparameters가 작동하는지 알 수 없습니다. key => 값의 배열이 될 예정입니까? $ parameters [i] = '% -'을 시도 할 때. $ text. '- %'; "잘못된 매개 변수 : 토큰 15가 쿼리에 정의되어 있지 않습니다."라는 오류 메시지가 나타납니다. 도움을 주셔서 감사합니다. – Joe
[setParameters 사용법에 대한 좀 더 명확한 예] (http://docs.doctrine-project.org/en/2.0). 당신이'$ parameters [$ i]'를 사용한다면 x/reference/query-builder.html # binding-parameters-to-your-query) 값이 있기 전에 이미'$ i ++' '$ parameters'에 추가됩니다. 오류가 발생하면'$ parameters [15] = value; '를 배열에 쓰는 동안 어디에서? 디버깅 목적으로'echo $ query-> getQuery() -> getSQL();'과'var_dump ($ parameters); '를 시도해보십시오. –