1

CActiveRecordYii でを使用してこれを達成する方法を知りたいです。

SELECT name, surname, UTC_TIMESTAMP(last_seen) FROM users WHERE id = '12345'

私はすでにこのメソッドを使用してほとんどのコードを作成しています:$model->findAll(...)が、お気に入りの MySQL タイムスタンプ関数をクエリに組み込むことができません。

date_default_timezone_set()PHPでタイムゾーンを設定するには、これが必要です。

私のタイムスタンプはTIMESTAMP、mysql テーブルの形式で保存されます。

編集

PHP から MySQL にタイムゾーンを渡そうとはしていません。CURRENT_TIMESTAMPデフォルト値として使用してタイムスタンプを保存します。私が使いたいdate_default_timezone_set()のは、この日付をユーザーのタイムゾーンで表示したいときだけです。

私が十分に明確でなかったら申し訳ありません。入力していただきありがとうございます:-)

4

1 に答える 1

1

最近のコメントの後、はい、日時関数を渡す方法があります。のドキュメントfindAll();を確認すると、2つの引数を取ることができます。1つは条件または基準用で、もう1つは生成されたSQLにバインドされるパラメーター用です。

最初の引数を使用して基準を渡し、CDbCriteriaのselectプロパティを使用できます。

SQLステートメントのselect句を参照します

したがって、次のことができます。

$dbCriteria=new CDbCriteria;
$dbCriteria->select='name, surname, UTC_TIMESTAMP() as some_alias'; // we need the alias so that the timestamp is easily accessible
// you can also pass * if you need to access all the values of the table, alongwith the timestamp, like '*, UTC_TIMESTAMP() as some_alias'
$model->findAll($dbCriteria);

ただし、もちろんsome_aliasを使用するには、モデルで宣言する必要があります。

public $some_alias; // this will be automatically be populated by the alias, when you query the db, in findAll
于 2012-07-22T13:44:24.633 に答える