我试图清理我的代码,所以我决定开始使用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']);
});但出于某种原因,它跳过了那里的语句。
任何帮助都将不胜感激。
发布于 2022-04-03 05:12:11
$gameQuery->when(isset($params['game'])
, function ($query) use ($params) {
$query->where('game', $params['game']);
});https://stackoverflow.com/questions/71722490
复制相似问题