シナリオ:私の PHP アプリケーションは常に日付フィールド DD-MM-YYYY を使用します。MySQLは明らかに常に日付をYYYY-MM-DDで保存します
免責事項:日付形式を手動で変更する方法を知っています-それは問題ではありません
質問:アプリケーションが常にDD-MM-YYYY の日付を取得し、mySQLが常にYYYY-MM-DD の日付を受け取って保存されるようにするための、適切でクリーンでエレガントな方法は何ですか?
つまり、基本的には、SQL クエリを実行するたびに呼び出さなくても、変換が自動的に行われる単一の場所が必要です。そうすれば、date_conversion を「忘れる」かどうかは問題ではありません。
どこかで何らかのコールバックを考えていますか?
(編集) 私の考え:現在、Codeigniter フレームワークを使用しています。before_get、before_insert、および before_update コールバックを使用して、MY_Model を使用することを考えています。これらのコールバックでは、次のような SELECT を使用してすべてのフィールドを調べることができます。
// {insert my query here to get records from DB. Then:
$query = $this->db->query();
$fields = $query->field_data();
foreach ($fields as $field)
{
if ($field->type == 'date')
// do conversion here
}
UPDATE/INSERT コールバックに対して同様のことを行います。私が知る限り、データベースに余分な作業はありません (Codeigniter が $query の結果で情報を提供するため)
考え?
編集2:他のアイデア:モデルごとにこれを行い、どのフィールドが日付フィールドであるかを定義し、各コールバックで変更を適用するだけです...ええ...そうするかもしれません...?