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.