Es ist falsch zu glauben, dass die Datenbank \ query \ Builder :: groupBy() Methode akzeptiert Arrays als Argumente. Zur Zeit akzeptiert es nur eine Anzahl von String-Argumenten.
Zum Zeitpunkt des Schreibens, die aktuelle Version des Laravel Framework ist: V4.2.4, und der Code für die Datenbank \ query \ Builder :: groupBy() Methode ist wie folgt:
/**
* Add a "group by" clause to the query.
*
* @param dynamic $columns
* @return \Illuminate\Database\Query\Builder|static
*/
public function groupBy()
{
$this->groups = array_merge((array) $this->groups, func_get_args());
return $this;
}
Wenn Wenn Sie darüber nachdenken, gibt func_get_args() ein Array aller Spalten zurück, die möglicherweise als Strings eingegeben wurden. Daher dieser Funktion erwartet Eingang:
$builder->groupBy('column1', 'column2', ...);
Die resultierende $ this-> Gruppen-Eigenschaft auf dem Builder-Objekt sollte ein Array von Strings sein, wie folgt aus:
['column1','column2']
Wenn wir jedoch gefüttert ein Array in das Verfahren oben, wie folgt aus:
$builder->groupBy(['column1','column2']);
die $ this-> Gruppen Eigenschaft würde mit einem verschachtelten Array am Ende, das wie folgt aussieht:
Der Rest des Query Builder-Frameworks erwartet, dass die $ builder-> groups-Eigenschaft ein nicht verschachteltes Array von Zeichenfolgen ist. Wenn das Framework versucht, Tabellennamen in ihrem richtigen Escape-Format zu spalten und zu umbrechen (jede Datenbank-Engine hat einen anderen Escape-Operator für Tabellennamen), versucht es daher, ein Array anstelle einer Zeichenfolge zu umbrechen, und Sie erhalten den Fehler.
Die fehlerhafte Fehlerzeile ist Zeile 49 in Database \ Grammar :: wrap().
Wenn wir die Datenbank \ query \ Builder ändern waren :: groupBy() -Methode, um es Arrays machen akzeptieren, würden wir es so etwas wie die folgenden umschreiben:
public function groupBy()
{
$args = func_get_args();
foreach($args AS $arg)
{
$arg = (is_array($arg)) ? $arg:[$arg];
$this->groups = array_merge((array) $this->groups, $arg);
}
return $this;
}
Diese Methode ein Array an jeder akzeptiert Parameterindex.
es funktioniert für mich, haben Sie Ihr Problem gefunden? –