2017-02-04 3 views
2

я получить все элементы из таблицы, где ENDDATE является> = сейчас и ENDDATE является NULL и опубликован = 1.Eloquent - Где дата> = дата (в настоящее время) и whereNull («дата»)

это то, что я есть, но дайте мне 0 пунктов:

$items = Items::orderBy(\DB::raw('RAND()')) 
     ->where('endDate', '>=', date("Y-m-d")) 
     ->whereNull('endDate') 
     ->where('published', '1') 
     ->whereIn('cid', $this->activeId) 
     ->orderBy('id') 
     ->paginate(4); 
+0

почему вы включая '-> где ('доступен',«1 ') ', если вам нужны данные с' -> где (' published ',' 1 ') '. Может быть, это вопрос –

ответ

3

Вы должны использовать замыкание и orWhereNull():

->where(function($) { 
    $q->where('endDate', '>=', date("Y-m-d")) 
     ->orWhereNull('endDate'); 
}) 
+1

спасибо, отлично работает :) – Crni

0

Вы используете оба условия, которые не дают результата

->where('endDate', '>=', date("Y-m-d")) 
->whereNull('endDate') 

Попробуйте использовать orWhere

+0

, если я использую: -> где ('saleEndDate', '> =', date ("Ymd")) -> orWhereNull ('saleEndDate'), это даст мне все предметы из таблицы, где дата есть <как дата (сейчас) – Crni

0

можно сделать с двумя закрытия where и orWhere:

->where(function($query) { 
    $query->where('endDate', '>=', date("Y-m-d")) 
     ->orWhere('endDate',NULL); 
})