我想使用迁移模块将Drupal7网站的内容迁移到另一个Drupal7系统。如果表中存在MySQL列,请检查PHP
我必须添加和映射字段。 drupal中每种内容类型的字段都存储在名为field_revision_field_name
的表中。大多数字段的值在列field_name_value
。但有些字段有另一种结构,所以我想检查field_name_value
列是否存在。
我正在连接表并在一个循环中的mysql查询中添加字段。问题是,并不是每一个表"field_revision_".$typeFields[$i]
(别名是$typeFields[$i]."_table"
)有一栏$typeFields[$i]."_value"
:
for ($i=0; $i < sizeof($typeFields); $i++) {
$query->join(
"field_revision_".$typeFields[$i],
$typeFields[$i]."_table",
"n.nid = ".$typeFields[$i]."_table.entity_id"
);
$query->addField($typeFields[$i]."_table", $typeFields[$i]."_value");
}
我要检查这个我做的查询,这样的事情之前:
for ($i=0; $i < sizeof($typeFields); $i++) {
if($typeFields[$i]."_table" has Column $typeFields[$i]."_value"){
$query->join(
"field_revision_".$typeFields[$i],
$typeFields[$i]."_table",
"n.nid = ".$typeFields[$i]."_table.entity_id"
);
$query->addField($typeFields[$i]."_table", $typeFields[$i]."_value");
}
}
有什么问题相似? –
一般来说,数据库模式以这种方式动态化是不好的设计。您试图解决的业务问题是什么导致您使用动态模式?我担心这个问题可能是[XY问题](http://meta.stackexchange.com/a/66378)的事件。 – eggyal
动态模式意味着不断重建索引不是吗? – crush