我正在尝试在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();
}
每次我运行此代码时,都会更改正确的术语别名,但它们都更改为第一个术语别名。例:
- 事件类别/ABC123 =>类别/ABC123
- 事件类别/def456 => 类别/ABC123
- 事件类别/ghi789 => 类别/ABC123
据我所知,str_replace在 dpm 处理 $new_alias 变量时有效。
将更新查询条件更改为
->condition('alias', '%'.$ua.'%', 'LIKE')