Laravel 查询生成器 - 多 where 子句
Laravel Query Builder - Multi-where clause
如何在查询生成器中执行此 where 子句?
WHERE
(ENTRY_MODE = 'ACTUAL' AND r.YEAR BETWEEN '2011' AND '2014')
OR
(ENTRY_MODE = 'BUDGETED' AND r.YEAR = '2014')
这是我当前的代码
->where(function($query) use($year, $yearFrom, $yearTo){
$query->where(function($query) use ($year){
$query->where('eh.ENTRY_MODE', 'BUDGETED')
->where('r.YEAR', $year)
})->orWhere(function($query) use ($yearFrom, $yearTo){
$query->where('eh.ENTRY_MODE', 'ACTUAL')
->whereIn('r.YEAR', array($yearFrom, $yearTo))
})
})
上面的代码在第 5 行(或 Where 部分)
给了我一个 syntax error, unexpected '}'
只是一个 semicolons
问题,试试这个:
->where(function($query) use($year, $yearFrom, $yearTo){
$query->where(function($query) use ($year){
$query->where('eh.ENTRY_MODE', 'BUDGETED')
->where('r.YEAR', $year); //<--semicolon here
})->orWhere(function($query) use ($yearFrom, $yearTo){
$query->where('eh.ENTRY_MODE', 'ACTUAL')
->whereIn('r.YEAR', array($yearFrom, $yearTo)); //<--semicolon here
}); //<--semicolon here
}); //<-- and one last semicolon here if this is the end of your chain.
如何在查询生成器中执行此 where 子句?
WHERE
(ENTRY_MODE = 'ACTUAL' AND r.YEAR BETWEEN '2011' AND '2014')
OR
(ENTRY_MODE = 'BUDGETED' AND r.YEAR = '2014')
这是我当前的代码
->where(function($query) use($year, $yearFrom, $yearTo){
$query->where(function($query) use ($year){
$query->where('eh.ENTRY_MODE', 'BUDGETED')
->where('r.YEAR', $year)
})->orWhere(function($query) use ($yearFrom, $yearTo){
$query->where('eh.ENTRY_MODE', 'ACTUAL')
->whereIn('r.YEAR', array($yearFrom, $yearTo))
})
})
上面的代码在第 5 行(或 Where 部分)
给了我一个syntax error, unexpected '}'
只是一个 semicolons
问题,试试这个:
->where(function($query) use($year, $yearFrom, $yearTo){
$query->where(function($query) use ($year){
$query->where('eh.ENTRY_MODE', 'BUDGETED')
->where('r.YEAR', $year); //<--semicolon here
})->orWhere(function($query) use ($yearFrom, $yearTo){
$query->where('eh.ENTRY_MODE', 'ACTUAL')
->whereIn('r.YEAR', array($yearFrom, $yearTo)); //<--semicolon here
}); //<--semicolon here
}); //<-- and one last semicolon here if this is the end of your chain.