2017-06-06 5 views
2

Ich erhalte ids jquery in meinem Controller mit seiner alsInvalid argument für foreach geliefert() Laravel verwendet, wobei (Laravel 5.3)

if(!empty($request->input('ids'))) { 
    $ids = $request->input('ids'); 
    }else{ 
       $ids = null; 
      } 

Ich versuche dd($ids)

Ausgabe als in meiner Konsole ist

array:3 [ 
    0 => "1" 
    1 => "2" 
    2 => "on" 
] 

Wenn ich ids zu meiner Anfrage passieren, wie

Abfrage

$student_ids = DB::table('students') 
      ->orderBy('name', 'asc') 
       ->where('group_id', '<>', 0) 
       ->whereIn('students.id','=', $ids) 
       ->pluck('id'); 

Sein nicht

Fehler arbeiten, ist: Invalid argument für foreach geliefert

Bitte helfen, wo ich bin falsch.

Dank
+0

Wie erhalten Sie aus Ihrer Sicht Ids? 3. Element in Array "on" sollte da sein? Ich denke, da stimmt etwas nicht. –

+0

Warum ist Ihre ID Zeichenfolge dort? –

+0

if ($ request-> has ('ids'))) {} – moathdev

Antwort

2

sollten Sie dies ändern:

->whereIn('students.id','=', $ids) 

Um dies:

->whereIn('students.id', $ids) 

Da der zweite Parameter von IDs iterierbar sein sollte, übergeben Sie jedoch eine Zeichenfolge =. Stellen Sie außerdem sicher, dass Sie ein Array oder eine Sammlung von IDs übergeben.

1

Wechsel:

where('students.id', '=', $ids) 

An:

whereIn('students.id', $ids); 
+0

immer noch gleiche Ausgabe –

+0

@bluemoon Schauen Sie genau ... Sie verwenden immer noch '=' als zweites Argument zu 'whereIn'. 'WhereIn' akzeptiert jedoch keinen Vergleichsoperator als zweites Argument, sondern akzeptiert nur ein Array als zweites Argument. Benutze genau das, was ich oben gepostet habe. – Ohgodwhy

1

Wie andere erwähnt haben, aktualisieren Sie die whereIn Parameter. Erleichtern Sie auch Ihre Anfrage wie folgt.

$ids = $request->input('ids', []); 

$student_ids = DB::table('students') 
    ->orderBy('name', 'asc') 
    ->where('group_id', '<>', 0) 
    ->whereIn('students.id', $ids) 
    ->pluck('id'); 
Verwandte Themen