【问题标题】:Laravel Query Builder - Multi-where clauseLaravel 查询生成器 - 多处子句
【发布时间】:2016-07-12 21:16:45
【问题描述】:

如何在查询生成器中执行此 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 '}'

【问题讨论】:

    标签: php laravel query-builder


    【解决方案1】:

    只是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.
    

    【讨论】:

    • 哦错过了!谢谢你!我认为不包括分号是可以的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2021-08-16
    • 2013-07-25
    相关资源
    最近更新 更多