J’ai une erreur SQL lorsque je tente de rajouter un équipement à mon plugin Sonarr.
De mon côté j’ai aucun logs sur mon plugin et j’ai l’impression que mon problème est apparu depuis une mise à jour Jeedom vers la 4.1.23.
Ce genre de problème parle à quelq’un ?
Voici l’erreur que j’ai sur Jeedom:
[MySQL] Error code : 42S22 (1054). Unknown column ‹ utils › in ‹ field list › : INSERT INTO eqLogic SET utils = :utils, id = :id, name = :name, logicalId = :logicalId, generic_type = :generic_type, object_id = :object_id, eqType_name = :eqType_name, isVisible = :isVisible, isEnable = :isEnable, configuration = :configuration, timeout = :timeout, category = :category, display = :display, order = :order, comment = :comment, tags = :tags
Effectivement le utils n’existe pas dans la DB eqLogic. Mais devrait’il exister ?
As-tu quelque chose dans ton preSave ou preInsert?
Une autre possibilité c’est que tu as une méthode ou une propriété sur ta class eqLogic qui met le bazar
n’as-tu pas une propriété « utils » sur ton eqlogic?
Je pense que tu as mis le doigt dessus !
Effectivement j’ai une propriété utils eqLogic…
Je vais mettre ça ailleurs !
Merci beaucoup pour le coup de main
C’est la couche db qui va dynamiquement chercher les propriétés de l’objet pour les sauver dans un champs de la table correspondante:
fichier db.class.php dans le core, les ligne du code qui utilise reflectionClass
/**
*
*
* @param type $object
* @return type
* @throws RuntimeException
*/
private static function getFields($object) {
$table = is_string($object) ? $object : self::getTableName($object);
if (isset(self::$fields[$table])) {
return self::$fields[$table];
}
$reflection = is_object($object) ? self::getReflectionClass($object) : new ReflectionClass($object);
$properties = $reflection->getProperties();
self::$fields[$table] = array();
foreach ($properties as $property) {
$name = $property->getName();
if ('_' !== $name[0]) {
self::$fields[$table][] = $name;
}
}
if (empty(self::$fields[$table])) {
throw new RuntimeException('No fields found for class ' . get_class($object));
}
return self::$fields[$table];
}