繁体   English   中英

Laravel查询生成器-多位置子句

[英]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))
    })
})      

上面的代码给我一个syntax error, unexpected '}'第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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM