I wrote this eloquent query which works without an active filter:
User controller:
$users = User::filter(request(['ngf_id', 'first_name', 'last_name', 'tariff']))
->select('*', DB::raw('YEAR(CURDATE()) - YEAR(birthdate) - IF(STR_TO_DATE(CONCAT(YEAR(CURDATE()), \'-\', MONTH(birthdate), \'-\', DAY(birthdate)) ,\'%Y-%c-%e\') > CURDATE(), 1, 0) AS age'))
->whereNotNull('moneybird_id')
->whereDate('member_date', '<', $whereMemberDate)
->whereDate('end_date', '!=', $whereEndDate)
->where('status', '=', 'active')
->orderBy('last_name')
->paginate(100);
But when i activate the tariff filter i get "Unknown column 'age' in 'where clause'".
User model:
public function scopeFilter($query, $filters) {
if (isset($filters['tariff'])) {
if ($tariff = $filters['tariff']) {
if ($tariff == 1) {
$query->where('age', '>', 18);
}
if ($tariff == 2) {
$query->whereBetween('age', [0, 14]);
}
if ($tariff == 3) {
$query->whereBetween('age', [15, 18]);
}
if ($tariff == 4) {
$query->where('membership', '=', 4);
}
if ($tariff == 5) {
$query->where('membership', '=', 5);
}
}
}
}
Any idea?
Regards,
Bas