sql >> Databáze >  >> RDS >> Mysql

Obecná chyba:nelze zavolat konstruktor třídy'

Jak je uvedeno v dokumentaci:

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.

stejný argument je k dispozici pro setFetchMode

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

Implementoval bych to podle toho:

Nejprve přidejte vlastnost $ctorArgs do \Core\Model s výchozí hodnotou null .Následuje nahrazení aktuálního setFetchMode hovory

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

A nakonec přidejte vlastnost $ctorArgs do \App\Models\Admin\Photo s výchozí hodnotou array("picture") .

To kódu sdělí, že váš konstruktor očekává parametr $picture .

Uvažoval bych o použití konstanty místo vlastnosti, ale to záleží na tom, jak se rozhodnete to implementovat.




  1. CHYBA:Chyba při instalaci mysql2:CHYBA:Nepodařilo se sestavit nativní rozšíření drahokamů

  2. Jak zjistit aktivní počet otevřených databázových připojení v H2/MySQL

  3. Jak zobrazit skutečný příkaz Oracle SQL, který se provádí

  4. Jak dynamicky načítat hodnoty do kontextového XML souboru Tomcatu