Несколько условий для db_update - PullRequest
4 голосов
/ 05 апреля 2011

В Drupal 7 простые обновления работают так:

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

Но что, если у меня несколько условий (скажем, nid> = 3 и uid> = 2). Пишу что-то вроде:

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

не похоже на работу. Есть идеи?

1 Ответ

8 голосов
/ 13 апреля 2011

То, что вы написали, будет эквивалентно:

'...WHERE (NID >= 3 AND UID >= 2)"

Если вы хотели использовать условие OR, вам нужно вложить операторы как таковые (нет, это не очень интуитивно понятно):

->condition(db_or()->condition('NID'', 3, '>=')->condition('UID', 2, '>='))

Существует также db_and () [по умолчанию для объединения нескольких методов условий] и db_xor (), которые вы можете использовать при вложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...