我想用cakephp进行这样的查询:
WHERE text LIKE '%keyword%'
AND
(
(text LIKE '%something%')
OR (text LIKE '%something%')
OR (...)
)
AND
(
(text LIKE '%other%')
OR (text LIKE '%other%')
OR (...)
)
NOT
(
(text LIKE '%dont include%')
OR (text LIKE '%dont include%')
OR (...)
)
Run Code Online (Sandbox Code Playgroud)
这是我的条件代码:
$conditions = array
(
'Tweet.text LIKE' => '%keyword%',
'AND' => array(
array(
'OR' => array(
// topic
array('Tweet.text LIKE' => '%something%'),
array('Tweet.text LIKE' => '%something%')
)
),
array(
'OR' => array(
// sentiment
array('Tweet.text LIKE' => '%other%'),
array('Tweet.text LIKE' => '%other%')
)
)
),
'NOT' => array(
array('Tweet.text LIKE' => '%dont include%'),
array('Tweet.text LIKE' => '%dont include%')
)
);
Run Code Online (Sandbox Code Playgroud)
我用Debugger :: dump()方法显示结果,结果只是使用了最后一个'OR'条件,而不是两个'OR'条件:
array(
'Tweet.text LIKE' => '%keyword%',
'OR' => array(
(int) 0 => array(
'Tweet.text LIKE' => '%other%'
),
(int) 1 => array(
'Tweet.text LIKE' => '%other%'
)
),
'NOT' => array(
(int) 0 => array(
'Tweet.text LIKE' => '%dont include%'
),
(int) 1 => array(
'Tweet.text LIKE' => '%dont include%'
)
)
)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何使用'OR'条件进行查询?
请尽快回复..在此先感谢:)
dog*_*c69 13
请尝试以下方法:
$conditions = array(
'Tweet.text LIKE' => '%aa%', //implied and
array( //implied and
'or' => array(
array('Tweet.text LIKE' => '%11%'),
array('Tweet.text LIKE' => '%22%'),
array('Tweet.text LIKE' => '%33%'),
...
)
),
array( //implied and
'or' => array(
array('Tweet.text LIKE' => '%123%'),
array('Tweet.text LIKE' => '%456%'),
array('Tweet.text LIKE' => '%789%'),
...
)
)
'not' => array(
'or' => array(
array('Tweet.text LIKE' => '%x%'),
array('Tweet.text LIKE' => '%y%'),
array('Tweet.text LIKE' => '%z%'),
...
)
)
)
Run Code Online (Sandbox Code Playgroud)
text LIKE aa
AND ( either 11, 22, 33 )
AND (either 123, 456, 789)
BUT NOT (x || y || z)`
Run Code Online (Sandbox Code Playgroud)
任何未指定的数组or,and或者not是and.无需手动指定.