db_update的多个条件

ayu*_*ush 4 drupal-7

在Drupal 7中,简单的更新工作方式如下:

$num_updated = db_update('joke')
->fields(array(
'punchline' => 'Take my wife please!',
))
->condition('nid', 3, '>=')
->execute();
Run Code Online (Sandbox Code Playgroud)

但是如果我有多个条件(比如nid> = 3和uid> = 2)会怎样.写点像:

$num_updated = db_update('joke')
->fields(array(
'punchline' => 'Take my wife please!',
))
->condition('nid', 3, '>=')
->condition('uid', 2, '>=')
->execute();
Run Code Online (Sandbox Code Playgroud)

似乎不起作用.有任何想法吗?

mat*_*lar 8

你所写的内容将相当于:

'...WHERE (NID >= 3 AND UID >= 2)"
Run Code Online (Sandbox Code Playgroud)

如果你想要OR条件,你需要将语句嵌套(不,它不是很直观):

->condition(db_or()->condition('NID'', 3, '>=')->condition('UID', 2, '>='))
Run Code Online (Sandbox Code Playgroud)

还有db_and()[链接多个条件方法的默认值]和嵌套时可以使用的db_xor().