Buenas, ya se que ha pasado mucho tiempo pero acabo de iniciar con Prestashop y he tenido el mismo problema que tienes tu y lo he podido solucionar.
Después de mirar el código del fichero WebserviceOutputBuilder.php encontré que si un recurso tiene asociaciones no se captura correctamente ya que intenta obtener un valor de un array que es null y obviamente no puede acceder a la posición del 'id'.
El error lo encontré en el siguiente método:
protected function renderFlatAssociation($object, $depth, $associations, $ws_params)
Este es el fragmento que produce el error:
if ($field_name == 'id' && !isset($field['sqlId'])) { $field['sqlId'] = 'id'; $field['value'] = $object_assoc['id']; // No se comprueba que sea distinto de null } elseif (!isset($field['sqlId'])) { $field['sqlId'] = $field_name; $field['value'] = $object_assoc[$field_name]; // Igual aquí }
La solución es cambiar esa condición, quedando como lo siguiente:
// Este fragmente de código lo he sacado de una versión más moderna de Prestashop, en concreto la 8.0.0 if ($field_name == 'id' && !isset($field['sqlId'])) { $field['sqlId'] = 'id'; $field['value'] = isset($object_assoc['id']) ? $object_assoc['id'] : null; // Ahora se comprueba que no sea null } elseif (!isset($field['sqlId'])) { $field['sqlId'] = $field_name; $field['value'] = isset($object_assoc[$field_name]) ? $object_assoc[$field_name] : null; // Aquí igual }
Como puedes ver el cambio es mínimo, pero esto me ha solucionado el problema y me devuelve el schema de cualquier recurso que tiene asociaciones.
Espero te sea de ayuda, me disculpo si algo esta mal. Como he dicho soy nuevo en Prestashop, un saludo.