2016-04-12 30 views
1

Peki, herkes bana yardımcı olabilir? veritabanındaki verileri yakalamak için iseDoğru bir şekilde kullanmak

$query = DB::table('empenho as emp')     
     ->join('despesa', 'emp.fichaOrcId', '=', 'despesa.id') 
     ->join('pessoa', 'emp.fornecedorId', '=', 'pessoa.id') 
     ->join('fonte', 'emp.fonteId', '=', 'fonte.id') 
     ->select('emp.nrEmpenho as a', 'emp.date as b', 'emp.tipo as c', 'pessoa.nome as d', 'emp.valor as e', 
       'emp.id as f', 'despesa.ficha as g', 'emp.ano as h', 'fonte.id as i') 
     ->orderby('emp.nrEmpenho'); 

Sonra bir yapın:

<div class="form-group col-md-12 col-sm-12 col-xs-12">   
<div class="col-md-2 col-sm-2 col-xs-2 form-label"> 
    {{Form::label('nrEmpenho', 'Nº Empenho')}} 
</div>   
<div class="col-md-6 col-sm-10 col-xs-10">  
    <div class="input-group"> 
     <span class="input-group-addon" id="interval">Inicial</span> 
      {{Form::text('nrEmpenho', null, ['class' => 'form-control', 'min' => 1])}} 
      <span class="input-group-addon" id="interval">Final</span> 
      {{Form::text('nrEmpenhooo', null, ['class' => 'form-control', 'min' => 1])}} 
    </div> 
</div>  

yüzden veritabanında veri arama yaparak bu sorgu var: Aşağıdaki form var:

if ($request->nrEmpenho) $query->where('emp.id', $request->nrEmpenho); 

Böylece sadece tanımlayıcı "nrEmpenho" ama wou olarak geçirilen sahaya çıkan, mükemmel çalışıyor Bir aralık seçimi yapmak isterim, "nrEmpenho" ve "nrEmpenhooo" arasındaki değeri alıyorum ki bu aradaki gibi mi? ? O/böyle bir şey olacağını

if ($request->nrEmpenho and $request->nrEmpenhooo) $query->where('emp.id', $request->between, $request->nrEmpenho and $request->nrEmpenhooo); 

Not: Hatta farklı tanımlayıcılar üzerinden 2 metin alanları, sadece bir filtre oluşturduğunuzda. Birisi bana yardım edebilir mi? Kodla ilgili sorularınız netleşmek için gereken her şeyi hazırlıyorum. PSs: Benim ingilizcem çok kötü, translater kullanıyorum, affet beni, bu yardıma ihtiyacım var.

cevap

2

kullanım whereBetween() fonksiyonu:

$query 
->where('emp.id', '>=', $request->nrEmpenho) 
->where('emp.id', '<=', $request->nrEmpenhooo); 

ya da belki kimlikleri bir dizi:

$query->whereBetween('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]); 

ama orada arasında ile performans sorunu sonra bu örneği kullanmaya çalışır eğer

?

yüzden:

$query->whereIn('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]); 
+1

o kadar çok şey çalıştı .... teşekkür ederim seviyorum kardeşim, sen ama acemi –

+0

duyuyorum reput istiyorum Seni seviyorum: P: arasına hakkında benim cevabın Ge onay güncellemesini performans eksikliği;) – num8er

+0

Bununla ilgili olarak, performans notunuz hakkında aynı fikirde değilim. Dizinlenmiş bir alanda kullanılan "ARKADAŞLAR", çok iyi bir performans sergiliyor. Bunun nedeni bir dizin aralığı taraması yapabilmesidir. –

İlgili konular