#php #doctrine-orm #symfony4
#php #doctrine-orm #symfony4
Вопрос:
Мне нужно вернуть Json из определенного объекта таким образом:
К настоящему времени я достиг результата:
Со следующим кодом:
namespace AppController;
use AppEntityLogStatus;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationJsonResponse;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentSerializerSerializerInterface;
class LogController extends AbstractController
{
/**
* @Route("/logs/statuses", name="log_statuses", methods={"POST"})
*/
public function index(EntityManagerInterface $entityManager): Response
{
$request = new Request($_POST);
$data = $request->getContent();
$data = json_decode($data);
$data = (array)$data;
$deviceId = $data['filter'];
$logStatuses = $entityManager->getRepository(LogStatus::class)
->findBy(['deviceid' => $deviceId], ['createdat' => 'DESC']);
return new JsonResponse([
'rows' => (array)$logStatuses[0]
]
);
}
}
Вопрос: как следует $logStatuses
кодировать, чтобы получить ожидаемый формат Json (или манипулировать в extend) без итерации по каждому объекту.
Комментарии:
1. Каков ваш результат, если вы просто
return $this->json(['rows' => [$logStatuses]]);
? Возможно, вам потребуется установитьsymfony/serializer
.2. @msg ваше предложение верно $this-> json делает мой день! Спасибо!
3. Если вам нужен более точный контроль над ответом, я бы посоветовал взглянуть на
->json()
исходный код и документы serializer . Вы также можете использовать его вместоjson_decode
вызова.