Есть ли способ db_update()
для следующего запроса?
UPDATE field_data_field_TEST as ft
left join node as n on ft.entity_id = n.nid
set n.type='test'
where n.type='foo'
Я пытался использовать, db_update()->join();
но это не сработало.
db_update()
не реализует интерфейсы, которые имеют join()
/ innerJoin()
/ и т.д. методы, поэтому я думаю, что вы застряли с использованием db_query()
и написанием строки запроса вручную.
$sql = "
UPDATE field_data_field_TEST as ft
left join node as n on ft.entity_id = n.nid
set n.type = :type1
where n.type = :type2";
$args = array(':type1' => 'test', ':type2' => 'foo');
db_query($sql, $args);
db_query()
. Если вы хотите неукоснительно придерживаться документации, тогда, конечно, условие с подзапросом было бы возможным. Но, как вы говорите, он будет менее производительным, и для меня это не «лучше», чем использование простого SQL-запросаUpdate
не реализует никакихjoin
функций, все же необходимо использовать общий запрос для этого случая.