我有一個 Symfony 專案,我想將 MySQL 表中的所有行存盤到 JSON 中。目前我的表中有五行,但在我的瀏覽器中它只回傳五個空值{"results":[{},{},{},{},{}]}
我想我做對了一些事情,但不是所有的事情。我的代碼中缺少什么?
#[Route('/budget/api', name: 'budget-api')]
public function index(Request $request, BudgetRepository $repository)
{
$results = $repository->findAll();
return $this->json(['results' => $results]);
}
uj5u.com熱心網友回復:
嘗試 createQueryBuilder 它很有用。
#[Route('/budget/api', name: 'budget-api')]
public function index(Request $request, BudgetRepository $repository)
{
$qb = $repository->createQueryBuilder("b");
$results = $qb->getQuery()->getArrayResult();
return $this->json(['results' => $results]);
}
uj5u.com熱心網友回復:
您可以使用序列化程式或像這樣自己重新創建陣列
$courses = $doctrine->getRepository(Course::class)->findByLikeTitle($search, $userId);
foreach ($courses as $key => $course) {
$jsonCourses[$key]['title'] = $course->getTitle();
}
```
uj5u.com熱心網友回復:
您可以通過使用序列化器將物件陣列轉換為 JSON 來實作此目的。還有其他方法可以實作這一點,例如使用jsonResponse。但是序列化器是imo最強大的方式。
僅示例:
use Symfony\Component\Serializer\SerializerInterface;
#[Route('/budget/api', name: 'budget-api')]
public function index(Request $request, BudgetRepository $repository, SerializerInterface $serializer)
{
$results = $repository->findAll();
$jsonResults = $serializer->serialize($results, 'json');
//If you need to handle any circular references, you can use this..
$jsonResults = $serializer->serialize($results, 'json', array(
'circular_reference_handler' => function ($object) { return $object; },
));
return $jsonResults;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/438379.html
