2016-07-12 17 views
0

これはどのようにしてクエリビルダ内の節を作成できますか?ここでLaravelクエリビルダ - 複数のwhere句

WHERE 
    (ENTRY_MODE = 'ACTUAL' AND r.YEAR BETWEEN '2011' AND '2014') 
    OR 
    (ENTRY_MODE = 'BUDGETED' AND r.YEAR = '2014') 

は、上記のコードは私のライン5(またはどこの部分)にsyntax error, unexpected '}'を与える私の現在のコード

->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)) 
    }) 
})  

ある

答えて

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. 
+0

ああ、それを逃した!ありがとうございました!セミコロンを含めないのは大丈夫だと思った。 – Kiel