Question

Je commence à travailler avec le cadre PHP du lithium.Je dois faire une requête pour obtenir des questions qui ont "% de test%" ou "%%%" dans le champ "titre". J'ai essayé de le faire en utilisant le code suivant:

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

mais cela fait cette requête:

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

Comment remplacer et avec ou?

merci

Était-ce utile?

La solution

En tant que solution à votre question, vous pouvez utiliser dans (=) au lieu de comme

'conditions'    => array(
    'name' => array(
        '=' => array(
            '%easy%',
            '%test%'
        )
    )
)

Ceci générera la requête:

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

ou peut être utilisé lors de la recherche en utilisant deux champs différents:

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

Et cela générera une requête:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top