我是 Laravel 的新手。 我有一个模型会员,其中包含“dateOfBirth”字段和一个名为“category”的附加字段(它包含取决于年龄的运动类别信息,例如(10岁以下、15岁以下、初级、高级、退伍军人...),因此它不能位于DB 因为它会改变每个赛季。
但是我需要根据年龄过滤有条件的成员。
$all = Member::where('status', '<>', 'pending');
if ($category != null) {
$all = $all->whereIn('category', $category);
}
这不起作用,因为我有一个错误告诉该列不存在:
Column not found: 1054 Unknown column 'category' in 'where clause'
有什么办法可以解决吗?
您可以使用switch case,它允许您根据每个类别的不同条件自定义 SQL 查询。
$members = Member::where('status', '<>', 'pending');
if ($category !== null) {
switch ($category) {
case 'Under 10':
$members = $members->where('dateOfBirth', '>=', now()->subYears(10));
break;
case 'Under 15':
$members = $members->where('dateOfBirth', '>=', now()->subYears(15));
break;
case 'Junior':
// Conditions for Junior category
break;
case 'Senior':
// Conditions for Senior category
break;
case 'Veteran':
// Conditions for Veteran category
break;
}
}
$members = $members->get();