sql >> Databasteknik >  >> RDS >> Mysql

Allmänt fel:kunde inte anropa klasskonstruktor'

Som nämnts i dokumentationen:

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.

samma argument är tillgängligt för setFetchMode

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

Jag skulle implementera detta i enlighet med detta:

Lägg först till en egenskap $ctorArgs till \Core\Model med standardvärdet null .Följt av att ersätta det nuvarande setFetchMode samtal

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

Och lägg till en egenskap $ctorArgs till \App\Models\Admin\Photo med standardvärdet array("picture") .

Detta kommer att berätta för koden att din konstruktör förväntar sig parametern $picture .

Jag skulle fundera på att använda en konstant istället för en egenskap, men det beror på hur du bestämmer dig för att implementera detta.




  1. Placera markördata i en array

  2. ERD-notationer i datamodellering

  3. Hämta alla överordnade/barnposter från databasen på Laravel (hierarkiska data)

  4. SQL Server Float-datatypberäkning kontra decimal