現在drupal 7の日付モジュールを使用しており、既存の日付フィールドにデータを既に保存しています。「繰り返し日付」を追加して日付フィールドを変更したいのですが、明らかに私はすでにそこにデータを持っているのでできません。私が思いついたオプションは次のとおりです:
追加の「繰り返し日付」機能を使用して、コンテンツタイプの完全に新しい日付フィールドを作成します。次に、すべての古い日付を新しいフィールドにコピーします(これを簡単に行う方法がわかりません)
Phpmyadminまたはmysqlコンソールを介して既存の日付フィールドテーブルを変更します。
すでにデータがある既存のフィールドを更新するために推奨される方法は何ですか?
この投稿モジュールもご覧ください https://www.drupal.org/project/entity_recur
データベースに触れるよりも安全な方法...
コード:
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->entityCondition('bundle', {your_content_type})
->addMetaData('account', user_load(1));
$result = $query->execute();
foreach($result['node'] as $nid => $n) {
$node = node_load($nid);
$node->field_event_date = $node->field_date; // Copy one field to another
node_save($node);
}
コードを記述せずに次のようにしてこれを機能させました。これは、DATEタイプのフィールドに対してのみ行うことに注意してください。
例:
私の古いフィールド:field_eventdate
私の新しいフィールド:field_placeholder
これが他の誰でもうまくいくかどうか私に知らせてください。
最初に、機能を使用して元の日付フィールドをキャプチャしました。次に、ターゲットにしたいフィールド(プレースホルダーで行ったのと同じようなもの)を作成し、Featuresでエクスポートしました。エクスポートされたコードを比較し、元のフィールドの機能エクスポートコードを更新し、field_data_field_ ..テーブルからデータをSQLダンプし、[フィールドの管理]画面で元のフィールドを削除し、変更された機能エクスポートコードに機能を戻し、SQLインポートしました。私の輸出から。出来上がり!