如何从laravel中的数据库中选择当前日期的一个月后记录。我正在尝试这段代码。
这是控制器代码。
class LoginHistoryController extends Controller {
public function index()
{
$login_history = LoginHistory::where('login_date','BETWEEN', '(CURDATE() -
INTERVAL 10 DAY) AND CURDATE()' )->get();
}
}
但是我收到了错误。
答案 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可能是特定于您的数据库服务器的,因此会降低您的代码的可移植性。但有时您无法使用查询构建器执行您想要的操作。