Doctrine orm 如何在支持多个数据库的情况下进行日期操作?

Doctrine orm 如何在支持多个数据库的情况下进行日期操作?,doctrine-orm,laravel-4,eloquent,Doctrine Orm,Laravel 4,Eloquent,我正在开发一个至少支持两个数据库的系统:MySQL和SQLite 我想知道我怎样才能安全地进行有说服力的日期操作,比如日期差、添加/分天数、添加/分月份等等 目前,我有以下代码,这是可行的,但我仍然相信找到一个更好的方法 $database=Config::get('database.default'); $yesterdaySql; 如果($database=='sqlite') { $yesterdaySql='datetime(\'now\',\'-1天\'); } else if($da

我正在开发一个至少支持两个数据库的系统:MySQLSQLite

我想知道我怎样才能安全地进行有说服力的日期操作,比如日期差、添加/分天数、添加/分月份等等

目前,我有以下代码,这是可行的,但我仍然相信找到一个更好的方法

$database=Config::get('database.default');
$yesterdaySql;
如果($database=='sqlite')
{
$yesterdaySql='datetime(\'now\',\'-1天\');
}
else if($database=='mysql')
{
$yesterdaySql='子日期(当前日期,1)';
}
有没有另一种不用显式使用原始和专有SQL语句的方法?我很想看到这样的东西:

$yesterdaySql=Model::where('date',DB::addDays(-1));
//DB将生成正确的原始SQL。


通过一些研究,我发现Doctrine有一个
Doctrine\DBAL\Platform\AbstractPlatform
类,其中包含如下方法:
GetDateDifferExpression
getDateAddDaysExpression
等等。

Laravel使用碳处理日期对象

您应该以Y-m-d格式传递日期字符串,或者使用DateTime/Carbon对象

从文档中:

将列视为日期时,可以将其值设置为UNIX timetamp、日期字符串(Y-m-d)、日期时间字符串,当然还有 DateTime/Carbon实例。 默认情况下,Eloquent将转换创建的、更新的和 删除了碳实例列中的_,这提供了 各种有用的方法,并扩展了本机PHP DateTime 班级


见此:

Laravel使用碳元素处理日期对象

您应该以Y-m-d格式传递日期字符串,或者使用DateTime/Carbon对象

从文档中:

将列视为日期时,可以将其值设置为UNIX timetamp、日期字符串(Y-m-d)、日期时间字符串,当然还有 DateTime/Carbon实例。 默认情况下,Eloquent将转换创建的、更新的和 删除了碳实例列中的_,这提供了 各种有用的方法,并扩展了本机PHP DateTime 班级

见此: