Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 原则2获取对id=>;价值_Php_Doctrine Orm - Fatal编程技术网

Php 原则2获取对id=>;价值

Php 原则2获取对id=>;价值,php,doctrine-orm,Php,Doctrine Orm,你好,我有一个简短的问题 我使用的是原则2,我需要从特定的表中获取成对的数组。 例如,我有一个表“Category”,表中有列('id'、'name'、'description'、…),我希望获得数组格式的所有行(Category.id=>Category.name),如下所示: array( 7 => 'News', 8 => 'Sport', 11 => 'Work' ) (在本例中,我只有3个ID为7、8、11的类别) 有什么简单快捷的方法吗?试试这个

你好,我有一个简短的问题

我使用的是原则2,我需要从特定的表中获取成对的数组。 例如,我有一个表“Category”,表中有列('id'、'name'、'description'、…),我希望获得数组格式的所有行(Category.id=>Category.name),如下所示:

array(
   7 => 'News',
   8 => 'Sport',
   11 => 'Work'
)
(在本例中,我只有3个ID为7、8、11的类别)

有什么简单快捷的方法吗?

试试这个

$result = $query->getResult(Query::HYDRATE_ARRAY);

更多信息。看

categoryId
转换为数组键,将
categoryName
转换为值

$newArr=[];
foreach($result as $cat){
    $newArr[] = [$cat['id'] => $cat['name']];
}
以数组形式获取结果

$result = $query->getResult(Query::HYDRATE_ARRAY);
然后,可以使用for each修改结果,如下所示:

$modifiedResults = array();

foreach ($results as $row)
{
    array_push($modifiedResults, array($row['id'] => $row['names']));
}

我认为,在这种情况下,你应该写你自己的答案,或者说,这比以前的答案要简单得多。 您可以通过使用PDO常量和Doctrine的数据库访问层(DBAL)来实现这一点

从控制器:

$dbal = $this->getDoctrine()->getConnection();
$idsAndNames = $dbal->executeQuery('SELECT id, name FROM Categories')
                    ->fetchAll(\PDO::FETCH_KEY_PAIR);

这将根据您的问题生成数组。

如果使用生成器,则可以使用“Query::hydrome\u array”。这将以数组的形式返回对象。可能是重复的,谢谢回答。但是它返回类似数组的数组(0=>array('id'=>7,'name'=>'News'),…),而不是数组(7=>'News'),…)。您假设他们使用的是SQL,而他们可能不使用。你的回答并没有提供一种通过条令来实现这一点的方法,而是通过PDO来实现,PDO并没有回答OP的问题。此外,OP甚至可能没有控制器之类的东西。
$dbal = $this->getDoctrine()->getConnection();
$idsAndNames = $dbal->executeQuery('SELECT id, name FROM Categories')
                    ->fetchAll(\PDO::FETCH_KEY_PAIR);