重构 Laravel isset params 到 eloquent when condition

Refactoring Laravel isset params to eloquent when condition

我正在尝试清理我的代码,所以我决定在我的查询中开始使用 when 选项而不是 isset ...但它似乎没有用,我看不到我在哪里我出错了。

我原来的代码是这样的;

$params['game'] = 'fallout';

$gameQuery = Gaming::query();

$gameSelect = isset($params['game']) ? $params['game'] : null;
if ($gameSelect) {
    $gameQuery = $gameQuery->where('game' $gameSelect);
}

这已经在代码库中工作了很多年。

我尝试重构为以下内容,使用 when 关键字

$params['game'] = 'fallout';

$gameQuery = Gaming::query();

$gameQuery->when($params['game'], function ($query) use ($params) {
    $query->where('game', $params['game']);
});

但出于某种原因,它只是跳过了 where 语句。

如有任何帮助,我们将不胜感激。

$gameQuery->when(isset($params['game']) 
, function ($query) use ($params) {
     $query->where('game', $params['game']);
 });