Vorbei an Wert als array in Where-Klausel in Laravel
Ich habe ein array in $qids
als
[{"qid":1},{"qid":2},{"qid":3},{"qid":4}]
, Jetzt möchte ich, um Zeilen aus der Datenbank passende diese qid
Wert. Ich arbeite auf meinem Laravel Projekt und die where-Klausel, die ich verwende, ist wie folgt
$questions = Question::where(function($q) use ($qids){
foreach($qids as $key => $value){
$q->where($key, '=', $value);
}
})->get();
Dieser gibt mir eine Fehlermeldung
*SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from `questions` where (`0` = {"qid":1} and `1` = {"qid":2} and `2` = {"qid":3} and `3` = {"qid":4}))*
Wie ich sehen kann, in der Fehler-Zeile
where (`0` = {"qid":1} and `1` = {"qid":2} and `2` = {"qid":3} and `3` = {"qid":4})
ist es unter 0, 1, 2, 3 Schlüssel und die ganze {"qid":1} als Wert.
FYI, ich bin die Erzeugung $qids
aus der Erklärung.
$qids = Examquestion::select('qid')->where('examid', $examid)->get();
gibt es eine Möglichkeit, dass ich sparen könnte, die nur Werte in $qids
eher als paar.
Hoffe, du verstehst das Szenario. TIA.
Du musst angemeldet sein, um einen Kommentar abzugeben.
diese stattdessen zu verwenden
dann dieses array verwenden, in
erhalten Sie Ihr Ergebnis
Als
qid
ist die sich wiederholende und somit redundante, Sie könnten glätten Sie das array, und verwenden Sie einewhereIn
Klausel:Assoziatives array-format, das Sie geben, ist falsch :
ich versuche mit unten z.B. ...seine Arbeit gut für mich.
$qids = array("a"=>"Äpfel", "b"=>"Orangen", "c"=>"Birnen");
Danke an alle. Ich habe mein code funktioniert, indem Sie Ihre Hilfe. Hier mein funktionierenden code-snippet.