Réponses:
db_update()
n'implémente pas d'interfaces avec join()
/ innerJoin()
/ etc. méthodes, donc je pense que vous êtes coincé avec l'utilisation db_query()
et l'écriture de la chaîne de requête manuellement.
$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 vous voulez vous en tenir rigoureusement à la documentation, alors bien sûr, une condition avec une sous-requête serait une option. Mais comme vous le dites, ce serait moins performant et pour moi, cela ne serait pas mieux que d'utiliser une requête SQL simple
Update
n'implémente aucune join
fonction, doit toujours utiliser la requête générique pour ce cas.