Cadre de lithium Comment faire une requête avec ou
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
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