1

MySQLSQLiteの少なくとも 2 つのデータベースをサポートするシステムを開発しています。

そして、日付の差分、追加/サブ日、追加/サブ月など、Eloquentで安全に日付操作を行うにはどうすればよいか疑問に思っています。

現在、私は次のコードを持っていますが、それは機能しますが、より良い方法を見つけることを信じたいと思っています。

$database = Config::get('database.default');
$yesterdaySql;

if ($database == 'sqlite') 
{
    $yesterdaySql = 'datetime(\'now\', \'-1 day\')';
}
else if ($databse == 'mysql') 
{
    $yesterdaySql = 'subdate(current_date, 1)';
}

生の独自のSQLステートメントを明示的に使用せずにそれを行う別の方法はありますか? 私は次のようなものを見たいです:

$yesterdaySql = Model::where('date', DB::addDays(-1));
// DB will generate the proper raw SQL.

いくつかの調査を行ったところ、Doctrine には次のDoctrine\DBAL\Platform\AbstractPlatformようなメソッドを含むクラスがあることがわかりました:getDateDiffExpressionなどgetDateAddDaysExpression

4

1 に答える 1

1

Laravel は Carbon を使用して Date オブジェクトを操作します。

日付文字列を Ymd 形式で渡すか、DateTime/Carbon オブジェクトを操作する必要があります。

ドキュメントから:

列が日付と見なされる場合、その値を UNIX タイムスタンプ、日付文字列 (Ymd)、日時文字列、そしてもちろん DateTime / Carbon インスタンスに設定できます。デフォルトでは、Eloquentはcreated_at、updated_at、およびdeleted_at列をCarbonのインスタンスに変換します。Carbonは、さまざまな便利なメソッドを提供し、ネイティブのPHP DateTimeクラスを拡張します。

これを参照してください:http://laravel.com/docs/eloquent#date-mutators

于 2013-10-09T17:49:43.300 に答える