繁体   English   中英

ZF2 Doctrine2存储库结果作为数组

[英]ZF2 Doctrine2 repository result as array

我有一个问题,我有两个控制器。 一个是一个宁静的控制器,它仅处理json数据并返回JsonModel ,另一个是默认的控制器,它返回一个ViewModel现在我有一个问题,我的方法只返回一个实体array ,这对于默认控制器是正确的,但是我的控制器需要将实体作为数组。 我该如何处理?

膳食控制器

class MealController extends AbstractRestfulController {
    protected $mealService;

    public function getList() {
        $meals = $this->mealService->getAllMeals();

        return new JsonModel($meals);
    }
}

餐饮服务

class MealService {
    protected $mealRepository;

    public function getAllMeals() {
        return $this->mealRepository->findAll();
    }
}

餐库

class MealRepository extends EntityRepository {
    public function findAll() {
        $queryBuilder = $this->createQueryBuilder('meal')
            ->orderBy('title');

        return $queryBuilder->getQuery()->getResult();
    }
}

您可以使用该数组水化技术 它允许在执行查询时指定水合模式,并更改返回结果的数据类型。 您只需要在getResult()方法中使用常量Query::HYDRATE_ARRAY作为参数:

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);

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM