2016-07-12 5 views
0

Как вы можете сделать это, когда предложение в построителе запросов?Laravel Query Builder - предложение Multi-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 (или где часть)

ответ

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