0

timestampという名前のタイプの MySQL 列がありますupdatedSELECT UNIX_TIMESTAMP(status_updated)Active Record モデルでYii にデフォルトで取得してもらいたいです。私がこれを行うことができるように:

$timestamp_as_integer = MyModel::model()->findByPk(1)->updated;

これは簡単に可能ですか?現在YYYY-MM-DD hh:mm:ss、MySQL がすべての日時列タイプに対して返す形式を解析して整数のタイムスタンプを取得していますが、データベースに強制的に実行させることができるかどうかは好奇心でしたか?

4

3 に答える 3

1

モデルで変換を実行します。

protected function afterFind() {
    parent::afterFind();

    $this->status_updated = strtotime($this->status_updated);
}

モデルで「検索」を実行すると、プロパティstatus_updatedは自動的にintタイムスタンプ形式になります。

于 2013-09-12T02:29:40.123 に答える
1

もう 1 つの方法は、ゲッターを作成することです。

public function getUpdatedTimestamp()
{
    return strtotime($this->updated);
}

良い点は、 としてアクセスし$model->updatedTimestamp、元の DB 値を保持できること$model->updatedです。

于 2013-09-12T06:47:29.830 に答える