我正在开发一个至少支持两个数据库的系统:MySQL和SQLite。
而且我想知道如何安全地使用 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
等等。