Drupal - 以编程方式为某些迁移的术语更改 url 别名

Drupal - changing url alias programmatically for some migrated terms

我正在尝试在 Drupal 中执行 SQL 查询,以编辑几个站点中的一些分类术语 url_aliases。

  // Query to get aliases which contain event-category in alias.
  $aliases = db_select('url_alias', 'ua')
    ->fields('ua', array('alias'))
    ->condition('alias', '%event-category/%', 'LIKE')
    ->execute()
    ->fetchCol();

  foreach ($aliases as &$ua) {
    // Strip out event-category and replace with category
    $new_alias = str_replace("event-category/", "category/", $ua);

    // Update url_alias table
    $update_db = db_update('url_alias')
      ->fields(array('alias' => $new_alias))
      ->condition('alias', '%event-category/%', 'LIKE')
      ->execute();

  }

每次我运行此代码正确的术语别名都会更改,但它们都更改为第一个术语别名。示例:

据我所知,str_replace 在 dpm 处理 $new_alias 变量时有效。

修改更新查询条件为 ->condition('alias', '%'.$ua.'%', 'LIKE')