如何从laravel中的数据库中选择一个月的记录

时间:2015-12-11 10:32:30

标签: laravel-5

如何从laravel中的数据库中选择当前日期的一个月后记录。我正在尝试这段代码。

这是控制器代码。

class LoginHistoryController extends Controller {

public function index()
{
$login_history = LoginHistory::where('login_date','BETWEEN', '(CURDATE() -  
INTERVAL 10 DAY) AND CURDATE()' )->get();
}
}

但是我收到了错误。

2 个答案:

答案 0 :(得分:0)

我将采用类似的方法。首先,我将计算日期

$today = date('Y-m-d');
$date = date_create($today);
date_sub($date, date_interval_create_from_date_string("30 days"));
$beforeOneMonth = date_format($date, "Y-m-d");

您现在应该在$beforeOneMonth中拥有预期的价值。现在,您无论如何都可以使用IN运算符或>=进行比较。例如。

$login_history = LoginHistory::where('login_date','>=', $beforeOneMonth)->get();

试一试。如果你以其他格式存储date,你可以自己设定一些技巧来格式化日期和做事情

答案 1 :(得分:0)

另一种方法是使用whereRaw

$login_history = LoginHistory::whereRaw(
    'login_date BETWEEN (CURDATE() - INTERVAL 10 DAY) AND CURDATE()'
)->get();

请注意,whereRaw会产生副作用,因为您使用的SQL可能是特定于您的数据库服务器的,因此会降低您的代码的可移植性。但有时您无法使用查询构建器执行您想要的操作。