angeben ich eine where-Klausel:Schleife eine Where-Klausel?
$this->model = $model->where('published', '=', '1');
$this->model->get();
Die obige funktioniert gut, eine Abfrage Protokoll geben: eine Schleife durch, wo Klauseln aus einem Array
select * from `products` where `published` = ?"
Aber ich brauche.
$arr = [['published', '=', '1'], ['id', '=', '1']];
foreach ($arr as $key => $value) {
$model = $model->where($value);
}
$model->get();
Aber mit dem oben genannten bekomme ich eine Spalte nicht gefunden. Unbekannte Spalte '0' in 'Where-Klausel'.
Wohin gehe ich falsch?
Anschluss an diese, wenn ich in das gesamte Feld übergeben Sie einfach, es funktioniert:
$model = $model->where($arr);
Geben Sie eine Abfrage Protokoll:
"select * from `products` where (`published` = ? and `id` = ?)"
Aber die where-Klauseln sind in Klammern ... Warum?
Wäre es richtig zu denken, dass Sie die Werte im Array an Ihr 'wo' übergeben wollen? Wenn Sie zum Beispiel '[['col', '=', 'val']]' 'hätten, würde das zu' $ model-> wo ('col', '=', 'val') '? – Jonathon
Ja, das ist korrekt, und das kann ich schon mit $ model-> where ($ arr); aber das Problem ist, dass es Klammern um meine WHERE-Klausel verursacht. Warum macht es das und was bedeuten die Klammern? – panthro
Versuchen Sie, die Zuweisung zu entfernen, also '$ model = $ model-> wobei (...);' $ modell-> where (...); '. Macht das irgendwas? Sie erhalten oft Klammern um where-Klauseln, wenn Sie etwas tun wie $ modell-> wo (funktion ($ query) {// Extra where-Klauseln}); ' – Jonathon