2016-10-04 9 views
0

Я изучаю laravel 4.2, и у меня есть сомнения в вопросе конструктора, красноречивого, у меня есть следующий код

public static function filterInvoicingReport($valuesFilter){ 

    $fechaInicio=''; 
    $fechaFin=''; 
    $customerId=''; 
    $state=''; 
    if($valuesFilter == null) 
     return; 

    //obtenemos los valores de las variables dateRegisterStart y dateRegisterEnd 
    if(array_key_exists('fechaInicio', $valuesFilter)&&array_key_exists('fechaFin', $valuesFilter)){ 
     $fechaInicio=$valuesFilter['fechaInicio']; 
     $fechaFin=$valuesFilter['fechaFin']; 
    } 
    if(array_key_exists('customerId',$valuesFilter)){ 
     $customerId=$valuesFilter['customerId']; 
    } 
    if(array_key_exists('state',$valuesFilter)){ 
     $state=$valuesFilter['state']; 
    } 



    $sql= DB::table('invoice') 
     -> select(
      'invoice.id_invoice', 
      'invoice.invoice_number', 
      'invoice.created_date', 
      'invoice.name_seller', 
      'invoice.conditions', 
      'invoice.total_sale', 
      'invoice.status', 
      'invoice.customerId', 
      'customer.name as customerName', 
      'customer.identificationId as customerDNI') 
     -> whereBetween(DB::raw('DATE_FORMAT(invoice.created_date,"%Y-%m-%d")'),[$fechaInicio,$fechaFin]) 
     ->Where('invoice.status','=',$state) 
     ->Where('invoice.customerId','=',$customerId) 
     -> join('customer','customer.customerId','=','invoice.customerId'); 
     -> get(); 
    return $sql; 
} 

является ли запрос для отчета, проблема заключается в том, что $state и $customerId могут быть пустыми, и запрос возвращает все пустым.

Я хочу, чтобы, если переменные в php пусты, верните мне только ->where с переменной не null.

ответ

2

Добавить подзапрос в ваших where статей:

->Where(function ($query) use ($state){ 
     if(!empty($state)) { 
      $query->where('invoice.status','=',$state); 
     } else { 
      $query->whereNotNull('invoice.status'); 
     } 
    }) 
    ->Where(function ($query) use ($customerId){ 
     if(!empty($customerId)) { 
      $query->where('invoice.customerId','=',$customerId); 
     } else { 
      $query->whereNotNull('invoice.customerId'); 
     } 
    }) 

 Смежные вопросы

  • Нет связанных вопросов^_^