2017-11-30 7 views
0

ist, ich habe folgendes wo Abfragen gekettet:eloquent nur gelten, wenn, wenn die Spalte nicht null

->where('start_timestamp', '<=', $activity->timestamp) 
->where('end_timestamp', '>=', $activity->timestamp) 
->where('minimum_activity_distance', '<=', $activity->distance) 
->where('maximum_activity_distance', '>=', $activity->distance) 
->where('minimum_activity_duration', '<=', $activity->duration) 
->where('maximum_activity_duration', '>=', $activity->duration) 
->where('minimum_activity_timestamp_time', '<=', $activity->timestamp->format('H:i:s')) 
->where('maximum_activity_timestamp_time', '>=', $activity->timestamp->format('H:i:s')); 

Jedoch können die Spalten auch NULL sein. Und wenn das so ist, möchte ich nicht, dass die Bedingung angewendet wird.

also, wenn minimum_activity_distance ist NULL ich überspringen wollen/ignorieren

->where('minimum_activity_distance', '<=', $activity->distance) 

Antwort

1

Sie where mit einem closure für diese

->where(function ($q) use ($activity) { 
     $q->where('minimum_activity_distance', '<=', $activity->distance) 
      ->orWhereNull('minimum_activity_distance'); 
    }) 
verwenden können
Verwandte Themen