¿Hay alguna forma de db_update()
para la siguiente consulta?
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'
Intenté usarlo db_update()->join();
pero no funcionó.
db_update()
no implementa ninguna interfaz que tenga join()
/ innerJoin()
/ etc. métodos, así que creo que está atascado con el uso db_query()
y la escritura de la cadena de consulta manualmente.
$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()
. Si desea apegarse rígidamente a la documentación, entonces seguro, una condición con una subconsulta sería una opción. Pero como usted dice, sería menos eficiente y para mí no se siente "mejor" que usar una consulta SQL directaUpdate
no implementa ningunajoin
función, todavía necesita usar la consulta genérica para este caso.