2017-06-09 3 views
1

Ich versuche, ein Array in Schleife, aber wenn es um die Abfrage geht es nur das erste Element, so dass ein wenig Hilfe wäre sehr wichtig.Holen Sie sich alle Elemente des Arrays in Abfrage Laravel

$data = Offers::whereIn('id_business', $business_id_array) 
        ->where([ 
         'visible' => 'yes', 
         'delete' => 'no' 
        ]) 
        ->where('end_date', '>=', date('Y-m-d h:m:i')) 
        ->orderBy('id', 'desc') 
        ->get(); 

       $data=array($data); 

       foreach($data as $key => $item) { 
        $offers = DB::select('the data i need to get WHERE o.`id` = ' . $item[$key]['id']); 


       } 

und das ist mein Problem hier, Es wird nur die ID des ersten Elements

o.`id` = ' . $item[$key]['id'] 
+0

Versuchen Sie '$ item-> id' in Ihrer Schleife. –

+0

@AmitGupta kein Mann, es funktioniert nicht – User154584

Antwort

0

, weil Sie die Ansicht in Seite haben Rückkehr der foreach-Schleife, so dass es nur eine Schleife durch den ersten Punkt und zurück. Was Sie mit diesem Fall tun können, ist

$data = Offers::whereIn('id_business', $business_id_array)...->get()->toArray(); 
$offers = array_map(function($item){ 
    $offer = DB::select('the data i need to get WHERE o.`id` = ?', [$item->id]); 
    return $offer; 
},$data); 
return view(....,['offers' =>$offers]); 
0

Erstens brauchen Sie nicht die $data auf ein Array zu werfen - es wird als zurückerhalten eine Sammlung, die Sie wie ein Array durchlaufen können. So werden Sie in der Lage sein, etwas zu verwenden, wie dies

$offers = Offers::whereIn('id_business', $business_id_array)...->get(); 

foreach ($offers as $offer) { 
    $moreData = DB::select('the data i need to get WHERE o.`id` = ?', [$offer->id]); 
} 
+0

es immer noch nur eine ID, nur die erste, während ich 4 Elemente als Array – User154584

+0

verwenden 'foreach ($ Angebote-> Artikel als $ Angebot)' statt – ayip

+0

@ayip Sie meinen foreach ($ Angebote als $ Artikel => $ Angebot) – User154584

0

Das sieht aus wie Sie die ID aus einer Tabelle verwenden, die zugehörigen Daten aus einer anderen Tabelle zu erhalten.

Sollte zwischen den beiden Tabellen keine Beziehung bestehen?

Die Antwort von @Chris G sieht korrekt aus, vielleicht dd ($ Angebote) um sicher zu sein, was drin ist.

Mick

+0

es ein Array erhalten, wenn wie folgt aus: Sammlung {# 256 ▼ #items: Array: 4 [▼ 0 => Angebote {# 255 ▶} 1 => Angebote {# 254 ▶} 2 => Angebote { # 253 ▶} 3 => Angebote {# 252 ▶} ] } – User154584

+0

und innerhalb jedes dieser Arrays muss ich die ID bekommen – User154584

Verwandte Themen