문제

리튬 PHP 프레임 워크로 작업을 시작합니다.'% Test %'또는 'Title'필드에서 '% Test %'또는 '% Easy %'가있는 질문을 얻으려면 쿼리를 만들어야합니다. 다음 코드를 사용하여 수행하려고했습니다.

$questions = Questions::find('all', array(
        'conditions'    => array(
            'name' => array(
                'like' => array(
                    '%easy%',
                    '%test%'
                )
            )
        )
    ));
.

그러나이 쿼리를 만듭니다.

SELECT * FROM `questions` AS `Questions` WHERE (`name` LIKE '%easy%' AND `name` LIKE '%test%')
.

교체 방법 및 또는?

감사합니다

도움이 되었습니까?

해결책

귀하의 질문에 대한 해결책으로 (=) 대신

대신 사용할 수 있습니다.
'conditions'    => array(
    'name' => array(
        '=' => array(
            '%easy%',
            '%test%'
        )
    )
)
.

이렇게하면 쿼리가 생성됩니다.

WHERE ((`name` IN ('%easy%', '%test%')))
.

또는 두 개의 다른 필드를 사용하여 검색 할 때 사용할 수 있습니다.

'conditions' => array(
    'OR' => array(
        'name' => array(
            '=' => array(
                '%easy%',
                '%test%'
            )
        ),
        'name2' => array(
            '!=' => array(
                '%easy%',
                '%test%'
            )
        )
    )
),
.

이는 쿼리를 생성합니다.

WHERE ((`name` IN ('%easy%', '%test%')) OR (`name2` IN ('%easy%', '%test%')))
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top