Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Allgemeiner Fehler:Klassenkonstruktor konnte nicht aufgerufen werden.

Wie in der Dokumentation erwähnt:

public array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

ctor_args

Arguments of custom class constructor when the fetch_style parameter is PDO::FETCH_CLASS.

dasselbe Argument ist für setFetchMode verfügbar

public bool PDOStatement::setFetchMode ( int $PDO::FETCH_CLASS , string $classname , array $ctorargs )

Ich würde dies entsprechend implementieren:

Fügen Sie zuerst eine Eigenschaft $ctorArgs hinzu nach \Core\Model mit einem Standardwert von null .Gefolgt vom Ersetzen des aktuellen setFetchMode Anrufe

if (!is_array($this->ctorArgs)) throw new \Excpeption("\"ctorArgs\" must be of type array");
$stm->setFetchMode(PDO::FETCH_CLASS, get_called_class(), $this->ctorArgs);

Und schließlich fügen Sie eine Eigenschaft $ctorArgs hinzu nach \App\Models\Admin\Photo mit einem Standardwert von array("picture") .

Dadurch wird dem Code mitgeteilt, dass Ihr Konstruktor den Parameter $picture erwartet .

Ich würde darüber nachdenken, eine Konstante anstelle einer Eigenschaft zu verwenden, aber das hängt davon ab, wie Sie sich entscheiden, dies zu implementieren.