Laravel:在Where条件中使用追加字段

问题描述 投票:0回答:1

我是 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'

有什么办法可以解决吗?

php laravel model
1个回答
0
投票

您可以使用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();
© www.soinside.com 2019 - 2024. All rights reserved.