Doctrine 原则2通过函数查找,获取键和值

Doctrine 原则2通过函数查找,获取键和值,doctrine,doctrine-orm,findby,Doctrine,Doctrine Orm,Findby,我可以动态获取键和值吗 在php中,您可以:foreach($key=>array$value) 但你可以这样做: $this->_em->getRepository('Members')->findBy(array('id' =>5)); 有没有办法从中获取键及其值 我可以通过将它转换为数组并提取它来实现这一点,但我不会在数组中得到任何关联结果 我希望这样做,因为我希望能够提取此对象的所有属性和值,并提取其中的所有其他对象 Ih与您现在遇到的问题相同,经过一些研究,我

我可以动态获取键和值吗

在php中,您可以:
foreach($key=>array$value)

但你可以这样做:

$this->_em->getRepository('Members')->findBy(array('id' =>5));
有没有办法从中获取键及其值

我可以通过将它转换为数组并提取它来实现这一点,但我不会在数组中得到任何关联结果


我希望这样做,因为我希望能够提取此对象的所有属性和值,并提取其中的所有其他对象

Ih与您现在遇到的问题相同,经过一些研究,我刚刚找到了一个您可能感兴趣的解决方案。您需要的是键/值的关联数组,而不是对象。findBy()方法只返回实体对象。因此您需要使用DQL(条令查询语言)

根据条令文件:

13.7.4。水化模式

每种水化模式都假设结果如何 返回用户土地。你应该知道要做的所有细节 最佳使用不同的结果格式:

不同水合模式的常数为: 查询::查询对象 查询::数组 查询::0×0标量 查询::水合物\u单\u标量

要了解有关“查询生成器”的更多信息,请参阅

更新: 要获取关联实体,您需要定义获取连接。以下是中提供的示例:

上面提到的代码将以数组数组的形式获取实体,您可以使用$keys和$values执行任何操作。
希望这有帮助…

是的,这很好,但是您有没有解决方案来获取结果中的所有关联对象?这只是拉取列值而已…您将需要在DQL查询中使用Fetch JOIN来提取其他表数据。这就是延迟加载的工作方式。DQL不支持关联。在Doctrine 2中,它是一个ORM,我们需要明确定义许多查询,而Doctrine 2强化了许多任务,以重新获取设置和值自动…@afterburner我正在为多个左连接使用hydreau对象获取数据,因此它为每个实体返回多个对象数组,我遇到的问题是如何知道哪个对象数组是哪个实体的。有什么建议吗?
//create a QueryBuilder instance
$qb = $this->_em->createQueryBuilder();
$qb->add('select', 'a')
//enter the table you want to query
->add('from', 'Members a')
->add('where', 'a.id = :id')
//order by username if you like
//->add('orderBy', 'a.username ASC')
//find a row with id=5
->setParameter('id', '5');
query = $qb->getQuery();
//if you dont put 3 or Query::HYDRATE_ARRAY inside getResult() an object is returned and if you put 3 an array is returned
$accounts = $query->getResult(3);
$dql = "SELECT b, e, r, p FROM Bug b JOIN b.engineer e ".
   "JOIN b.reporter r JOIN b.products p ORDER BY b.created DESC";
$query = $entityManager->createQuery($dql);
$bugs = $query->getArrayResult();

foreach ($bugs AS $bug) {
  echo $bug['description'] . " - " . $bug['created']->format('d.m.Y')."\n";
  echo "    Reported by: ".$bug['reporter']['name']."\n";
  echo "    Assigned to: ".$bug['engineer']['name']."\n";
foreach($bug['products'] AS $product) {
  echo "    Platform: ".$product['name']."\n";}
  echo "\n";}