Add option to show all entities
This commit is contained in:
parent
18a6a21085
commit
f4a4362592
@ -33,7 +33,8 @@ abstract class AbstractEntityCommand extends Command
|
||||
->addOption('create', 'c', InputOption::VALUE_NONE, 'Create entity')
|
||||
->addOption('modify', 'm', InputOption::VALUE_NONE, 'Edit entity')
|
||||
->addOption('delete', 'd', InputOption::VALUE_NONE, 'Delete entity')
|
||||
->addOption('show', 's', InputOption::VALUE_NONE, 'Show entity');
|
||||
->addOption('show', 's', InputOption::VALUE_NONE, 'Show entity')
|
||||
->addOption('all', 'a', InputOption::VALUE_NONE, 'Show all entities');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int
|
||||
@ -75,9 +76,17 @@ abstract class AbstractEntityCommand extends Command
|
||||
$entity = $this->select($io, $id);
|
||||
$table = $io->createTable();
|
||||
$table->setHeaders(['property', 'value']);
|
||||
$table->setRows($builder->getAllProperties($entity));
|
||||
$table->setRows($builder->getAllPropertiesTable($entity));
|
||||
$table->setHeaderTitle(sprintf('id: %s', $entity->getId()));
|
||||
$table->render();
|
||||
} elseif ($input->getOption('all')) {
|
||||
$io->info(sprintf('Showing all %s', $this->getEntityClass()));
|
||||
$entities = $this->em->getRepository($this->getEntityClass())->findAll();
|
||||
$table = $io->createTable();
|
||||
$table->setHeaders($builder->getPopertyNames());
|
||||
$table->setRows(array_map(fn(object $o) => $builder->getAllProperties($o), $entities));
|
||||
$table->setHeaderTitle($this->getEntityClass());
|
||||
$table->render();
|
||||
} else {
|
||||
$io->error('Select at least one of the options: Create (-c), Modify (-m), Delete (-d) or Show (-s)');
|
||||
return Command::INVALID;
|
||||
|
@ -29,7 +29,7 @@ class Builder
|
||||
return $this;
|
||||
}
|
||||
|
||||
private function getPopertyNames(): array
|
||||
public function getPopertyNames(): array
|
||||
{
|
||||
return array_map(fn(BaseElement $element) => $element->getProperty(), $this->elements);
|
||||
}
|
||||
@ -60,10 +60,19 @@ class Builder
|
||||
|
||||
public function getAllProperties(object $object): array
|
||||
{
|
||||
$data = [];
|
||||
$properties = [];
|
||||
foreach ($this->elements as $element) {
|
||||
$getter = sprintf('get%s', ucfirst($element->getProperty()));
|
||||
$data[] = [$element->getProperty(), $object->$getter()];
|
||||
$properties[$element->getProperty()] = $object->$getter();
|
||||
}
|
||||
return $properties;
|
||||
}
|
||||
|
||||
public function getAllPropertiesTable(object $object): array
|
||||
{
|
||||
$data = [];
|
||||
foreach ($this->getAllProperties($object) as $property => $value) {
|
||||
$data[] = [$property, $value];
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user