如何从数据库表'jongeren'中筛选出生日期早于2000年3月27日的学生
解决筛选年满18岁学生的问题
你需要从jongeren表中筛选出出生日期早于2000年3月27日的学生对吧?我来帮你修改模型里的fetch_data方法,实现这个需求。
方法1:硬编码指定日期筛选
如果需求就是固定筛选早于2000-03-27的记录,直接在查询里添加where条件即可。假设你用的是Laravel的查询构造器或者Eloquent模型,修改后的代码如下:
用查询构造器的版本:
public function fetch_data() { // 筛选出生日期早于2000年3月27日的学生 return DB::table('jongeren') ->where('geboortedatum', '<', '2000-03-27') ->get(); }
用Eloquent模型的版本(假设模型名为Jongeren):
public function fetch_data() { return \App\Models\Jongeren::where('geboortedatum', '<', '2000-03-27')->get(); }
方法2:动态计算18年前的日期(更通用)
如果你的需求是始终显示年满18岁的学生,而不是固定某个日期,推荐用Carbon来动态计算18年前的日期,这样不需要每年手动修改代码:
首先确保引入Carbon:
use Carbon\Carbon;
然后修改方法:
public function fetch_data() { // 计算当前日期往前推18年的日期 $eighteenYearsAgo = Carbon::now()->subYears(18)->format('Y-m-d'); // 筛选出生日期早于等于该日期的学生 return \App\Models\Jongeren::where('geboortedatum', '<=', $eighteenYearsAgo)->get(); }
补充说明
- 不管你的
geboortedatum字段是date还是datetime类型,MySQL都能正确处理日期比较逻辑。 - 如果需要排序,可以在查询末尾添加
->orderBy('geboortedatum', 'desc')来按出生日期倒序排列。
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

