1
<?php
class PluginModel extends PluginAppModel {
  public function hello(){
    $anotherModel =& ClassRegistry::init('Plugin.PluginAnotherModel');

    $this->read();

    $db =& ConnectionManager::getDataSource($this->useDbConfig);
    $db->begin($this);

    $anotherModel->create(array('AnotherModel' => $this->data['PluginModel']));
    $anotherModel->save();

    $db->commit($this);
  }
}
?>

このスクリプトは ClassRegistry::init() 関数を使用して別のモデルを呼び出しています。現在のモデルからデータを取得し、それを他のモデルの create() に入れます。保存しようとすると、char を datetime に変換する際に SqlServer エラーが発生します。データをデバッグすると、INSERT 日時形式が「Ymd」として表示されますが、app/model/datasource/Sqlserver.php で datetime = 'Ymd' を指定しました。

日時形式が取得されないのはなぜですか? 通常のモデルの保存では期待どおりに機能しますが、ClassRegistry::init 関数で別のモデルを呼び出すと機能しませんか?

保存する前にデータセットをループして日時フィールドを「Ymd」に変換するという回避策がありますが、これは正しい方法のようには思えませんか?

ありがとう。

4

1 に答える 1

0

時間がなくなったので、最後にphpで日付形式を変換しました。

于 2014-01-24T12:44:01.343 に答える