重构 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']);
});
我正在尝试清理我的代码,所以我决定在我的查询中开始使用 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']);
});