Closed
Description
This is a proposal for adding a Response\Elasticsearch::mapTo($class = 'stdClass')
for mapping an ES|QL response into an object of a class $class
.
Here an example:
class Employee
{
public string $name;
public DateTime $birthdate;
public float $avg_salary;
public string $country;
}
$client = ClientBuilder::create()
->build();
$result = $client->esql()->query([
'body' => [
'query' => 'FROM employees | STATS avg_salary = AVG(salary) by country'
]
]);
$employees = $result->mapTo(Employee::class); // array of Employee
printf("Number of employees: %d\n", count($employees));
printf("First employee\n");
printf("Name: %s\n", $employees[0]->name);
printf("Birthdate: %s\n", $employees[0]->birthday->format('Y-m-d'));
printf("Avg salary: %.2f\n", $employees[0]->avg_salary);
printf("Country: %s\n", $employees[0]->country);
If $class
is not specified the default class is stdClass.
Metadata
Metadata
Assignees
Labels
No labels