web-dev-qa-db-fra.com

Eloquent - Où Date> = date (maintenant) et oùNull ('date')

J'obtiendrai tous les éléments de la table où endDate est> = now et endDate est NULL et published = 1.

c'est ce que j'ai, mais donnez-moi 0 articles:

$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);
4
Crni

Vous devez utiliser une fermeture et la orWhereNull():

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

Vous utilisez les deux conditions, qui ne donnent jamais de résultat

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

Essayez d'utiliser orWhere

1
Subhash Chavda

Vous pouvez faire avec deux fermetures where et orWhere:

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