Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ogólny błąd:nie można wywołać konstruktora klasy'

Jak wspomniano w dokumentacji:

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.

ten sam argument jest dostępny dla setFetchMode

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

Zrealizowałbym to odpowiednio:

Najpierw dodaj właściwość $ctorArgs do \Core\Model z domyślną wartością null .Następnie następuje zastąpienie obecnego setFetchMode połączenia

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

I na koniec dodaj właściwość $ctorArgs do \App\Models\Admin\Photo z domyślną wartością array("picture") .

To powie kodowi, że twój konstruktor oczekuje parametru $picture .

Pomyślałbym o użyciu stałej zamiast właściwości, ale to zależy od tego, jak zdecydujesz się to zaimplementować.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO — błąd krytyczny:wywołanie funkcji członkowskiej fetch() na obiekcie niebędącym obiektem

  2. Zapytania MySQL UNION 2 zawierające ORDER BYs

  3. Mysql sortuj według daty, ale ignoruj ​​rok

  4. Łączenie się z bazą danych MySQL w .NET

  5. Błąd SQL:1054, SQLState:42S22 Nieznana kolumna na liście pól Błąd Java Spring Boot Mysql