Mysql
 sql >> Database >  >> RDS >> Mysql

Errore generale:impossibile chiamare il costruttore di classe'

Come indicato nella documentazione:

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.

lo stesso argomento è disponibile per setFetchMode

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

Lo implementerei di conseguenza:

Innanzitutto aggiungi una proprietà $ctorArgs a \Core\Model con un valore predefinito di null .Seguito dalla sostituzione dell'attuale setFetchMode chiamate

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

E infine aggiungi una proprietà $ctorArgs a \App\Models\Admin\Photo con un valore predefinito di array("picture") .

Questo dirà al codice che il tuo costruttore si aspetta il parametro $picture .

Penserei di usare una costante invece di una proprietà, ma dipende da come decidi di implementarla.