我有问题,我有两个控制器。一个是一个宁静的控制器,只处理json
数据并返回JsonModel
,另一个是默认控制器,返回ViewModel
现在我遇到了问题,我的方法只返回array
个实体,这对于默认控制器是正确的,但我的restful控制器需要将实体作为数组。我怎么处理这个?
MealController
class MealController extends AbstractRestfulController {
protected $mealService;
public function getList() {
$meals = $this->mealService->getAllMeals();
return new JsonModel($meals);
}
}
MealService
class MealService {
protected $mealRepository;
public function getAllMeals() {
return $this->mealRepository->findAll();
}
}
MealRepository
class MealRepository extends EntityRepository {
public function findAll() {
$queryBuilder = $this->createQueryBuilder('meal')
->orderBy('title');
return $queryBuilder->getQuery()->getResult();
}
}
答案 0 :(得分:0)
你可以使用Array Hydration。它允许在执行查询时指定水合模式,并更改返回结果的数据类型。您只需要在Query::HYDRATE_ARRAY
方法中使用常量getResult()
作为参数:
public function findAll() {
$queryBuilder = $this->createQueryBuilder('meal')
->orderBy('title');
return $queryBuilder->getQuery()->getResult(Doctrine\ORM\Query::HYDRATE_ARRAY);
}
也许您还可以查看EntitySerializer类,它允许您从实体创建一个json数组:
$entitySerializer = new EntitySerializer($em);
$entityAsArray = $entitySerializer->toArray($entity);
希望这有帮助。