Здравствуйте!
Порылся в интернете и ничего не нашел.
Небходимо часть текста заменить в ноде.
Есть sql запрос:
UPDATE field_data_body SET body_value = REPLACE( body_value, 'что меняем', 'на что меняем') WHERE entity_id ='288';
необходимо выполнить запрос в db_query() друпал 7
Помогите сконвертировать sql запрос
Главные вкладки
Лучший ответ
Вопрос решен.
Сначала делаем выборку текста.
Затем замена части текста функцией str_replace
Далее обновляем БД, выглядит так:
<?php
$text = db_query('SELECT body_value FROM {field_data_body} WHERE entity_id = :id', array(':id' => 288)) ->fetchField();
$changetext = str_replace("что меняем", "на что меняем", "$text");
db_update('field_data_body')
->fields(array('body_value' => $changetext))
->condition('entity_id', 288)
->execute();
?>
Всем спасибо.
Комментарии
Нигде не увидел функции REPLACE
https://www.drupal.org/docs/7/api/database-api/dynamic-queries/expressions
Вас не правильно поняли, наверное потому что Вы не правильно вопрос задали.
А именно, не обозначили явно, с чем у Вас проблема..
<?php
db_update('field_data_body')
->fields(array('body_value' => 'xxx'))
->condition('entity_id', 288)
->execute(); //Либо
$node = node_load(288);
$node->body['und'][0]['value'] = 'xxx';
node_save($node);
?>
Вопрос решен.
Сначала делаем выборку текста.
Затем замена части текста функцией str_replace
Далее обновляем БД, выглядит так:
<?php
$text = db_query('SELECT body_value FROM {field_data_body} WHERE entity_id = :id', array(':id' => 288)) ->fetchField();
$changetext = str_replace("что меняем", "на что меняем", "$text");
db_update('field_data_body')
->fields(array('body_value' => $changetext))
->condition('entity_id', 288)
->execute();
?>
Всем спасибо.