gpt4 book ai didi

orm - 如何将 Doctrine2 实体图转换为数组

转载 作者:行者123 更新时间:2023-12-04 19:49:25 27 4
gpt4 key购买 nike

我有以下实体

我想做的是,当我通过 ID 获取产品时,我想将其转换为包含所有关联实体及其关联条目的数组。

结果数组需要是可序列化的。

最佳答案

使用学说查询生成器和 HYDRATE_ARRAY 水合模式?

编辑:很抱歉没有包含示例,当时我正在使用手机。查看the blog post我写了一些与此半相关的学说的良好实践。

对于代码示例,我将编写的存储库方法如下(我会避免使用 p c 等缩写,因为它使您的代码可读性差很多(至少在你开始学说的时候......)

<?php

namespace Vendor\Prefix\Repository;

use Doctrine\ORM\EntityRepository;

class ProductRepository extends EntityRepository
{
public function find($id)
{
// $em is the entity manager
$qb = $em->createQueryBuilder();

$qb
->select('product', 'category', 'tag', 'brand', 'category_child')
// Or SomeBundle:Product if you're on symfony
->from('Vendor\Prefix\Entity\Product', 'product')
// You need to explicitly fetch join all your
// associations...and select them
->leftJoin('product.Brand', 'brand')
->leftJoin('product.Tags', 'tag')
->leftJoin('product.Categories', 'category')
->leftJoin('category.Children', 'category_child')
// Use prepared statments...its a good habit
->where($qb->expr()->eq('product.ID', ':id'))
->setParameter('id', $id)
;

$query = $qb->getQuery();

// Potential Hydration Modes
// --------------------------------
// Doctrine\ORM\Query::HYDRATE_OBJECT
// Doctrine\ORM\Query::HYDRATE_ARRAY
// Doctrine\ORM\Query::HYDRATE_SCALAR
// Doctrine\ORM\Query::HYDRATE_SINGLE_SCALAR
// Doctrine\ORM\Query::HYDRATE_SIMPLEOBJECT

// Hydrate the result as an array to get the requested format
// When you use array hyrdation doctrine does it according
// to your entity graph
return $query->getResult(Doctrine\ORM\Query::HYDRATE_ARRAY);
}
}

关于orm - 如何将 Doctrine2 实体图转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9550981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com