1

drupal 6 では、次のようなことをしていました。

<?php
/*
 * CLASS Example
 */
class example {
  var $id = NULL;
  var $title;
  var $body;

  .....

  // Save
  function save() {
    $primary_key = ($this->id == NULL ? NULL : 'id');
    if (drupal_write_record('mytabble', $this, $primary_key)) {
      return TRUE; 
    } else {
      return FALSE;
    }
  }
}
?>

これはかなりうまくいきました。しかし Drupal 7 では、drupal_write_record は配列のみを取り、オブジェクト $this は取りません。新しい db_merge も配列のみを取ります。オブジェクトのプロパティをデータベースに保存したいので、上記のコードは非常に便利で、あらゆる種類のクラスに対応しています。オブジェクトをデータベースに書き込む別の方法や、オブジェクトのプロパティを配列に配置する方法はありますか?

どんな助けでも大歓迎です!

ロバート

4

1 に答える 1

1

drupal_write_record は、オブジェクトまたは配列を取ります。あなたの問題は別の場所で発生していると思います。

drupal_write_record($table, &$record, $primary_keys = array())

$record:参照によって渡される、書き込むレコードを表すオブジェクトまたは配列。新しいレコードを挿入する場合、$record に指定されていない値は、$record とデータベースに、スキーマの既定値と、単一のシリアル (自動インクリメント) フィールド (存在する場合) で入力されます。既存のレコードを更新する場合、提供された値のみがデータベースで更新され、$record は変更されません。

D7 の drupal_write_record に関する詳細情報。

于 2012-07-07T06:53:32.597 に答える