2017-11-01 2 views
0

TYPO3을 사용하여 간단한 쿼리를 만들려고합니다. 이름이 숫자 값으로 시작하는 테이블에서 모든 결과를 검색하고 정렬하려고합니다. 불행히도 $ statement 변수를 만드는 것은 작동하지 않습니다. TYPO3 유형의 쿼리 ($query->matching, $query->like)를 사용하여이를 어떻게 수행 할 수 있습니까? 답변 주셔서 감사합니다.TYPO3 만들기 쿼리

UPDATE :

TYPO3 버전 : 내가 뭘하려 8.7.3
:

public function sortReferencesNumerically(){ 
    $query = $this->createQuery(); 
    $statement = 'select * from tx_referencemanager_domain_model_reference WHERE name REGEXP '^[0-9]' ORDER BY CAST(name as SIGNED INTEGER) ASC'; 
    $query->statement($statement); 
    return $query->execute(); 
} 

NewUpdate : 불행하게도 나는 그것이 작동조차 힘든는 $ 문 방법을 사용할 수 없습니다. 어쨌든 query-> statement 메소드없이 이것을 수행 할 수 있습니까? 나는 이것을 시도했지만 수치가 시작되는 테이블의 첫 번째 데이터 만 보여 주며 심지어 20-30과 같이 힘들다.

array_push($queryConstraints, $query->logicalOr([ 
        $query->like('name', '0%'), 
        $query->like('name', '1%'), 
        $query->like('name', '2%'), 
        $query->like('name', '3%'), 
        $query->like('name', '4%'), 
        $query->like('name', '5%'), 
        $query->like('name', '6%'), 
        $query->like('name', '7%'), 
        $query->like('name', '8%'), 
        $query->like('name', '9%'), 
       ])); 
+0

당신은 더 구체적 일 수 있습니다 당신이 시도 정확한 코드를 게시? 설정에 대한 자세한 내용 (TYPO3 버전, 확장자 등) –

+0

문자열이 손상되었습니다. 작은 따옴표로 문자열을 캡슐화하는 경우 작은 따옴표를 사용하여 정규식을 구분하지 마십시오. – j4k3

답변

0

문자열이 잘못되었습니다. 작은 따옴표로 문자열을 캡슐화하는 경우 작은 따옴표를 사용하여 정규식을 구분하지 마십시오.

이 작동합니다 :

public function sortReferencesNumerically(){ 
    $query = $this->createQuery(); 
    $statement = 'select * from tx_referencemanager_domain_model_reference WHERE name REGEXP \'^[0-9]\' ORDER BY CAST(name as SIGNED INTEGER) ASC'; 
    $query->statement($statement); 
    return $query->execute(); 
} 
+0

$ statement 메서드가 없어도 이렇게 할 수 있습니까? –

+0

내가 아는 누구도. 내가 아는 한 정규 표현식은 Extbase에서 구현되지 않습니다. 어쩌면 그 값이 나타내는 값을 별도의 정수 열로 분리해야합니다. – j4k3