是否可以在Doctrine2中更改getResult()的数组键值?
例:
$qb->select('t.id, t.name')->from('Table', 't');
当我打印这个时,我得到了,这不是我想要的:
print_r($qb->getQuery()->getResult());
//Print result: Array ( [0] => Array ( [id] => 20 [name] => Name1 ) [1] => Array ( [id] => 21 [percentagem] => Name2 ) )
我想要的是:
Array ( [20] => Array ( [id] => 20 [name] => Name1 ) [21] => Array ( [id] => 21 [percentagem] => Name2 ) )
建议,提示将不胜感激.
我有不同的语言环境的多个路由:
例:
路线为/ de
$routes['industry'] = array(
'route' => 'branche/:type',
'defaults' => array(
'module' => 'default',
'controller' => 'index',
'action' => 'branche',
'type' => 'automobil'
),
'reqs' => array(
'type' => '(automobil|textil)'
)
);
Run Code Online (Sandbox Code Playgroud)
路线为/ en
$routes['industry'] = array(
'route' => 'industry/:type',
'defaults' => array(
'module' => 'default',
'controller' => 'index',
'action' => 'branche',
'type' => 'car'
),
'reqs' => array(
'type' => '(car|textile)'
)
);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它可能以某种方式只有一条路线而不是2条路线?
注意不仅是更改的路由,还有reqs上的类型和默认类型.
我有一个多租户应用程序,我正在使用Doctrine Filters来过滤我的SQL客户端.
所以,当我想要一个我的客户端项目列表时,我只需要做一个"getAll",过滤器会自动在WHERE子句上附加SQL,如下所示:
SELECT *
FROM projects p
WHERE p.client_id = 1 #(appended by the filter)
Run Code Online (Sandbox Code Playgroud)
我的问题是当我想要例如ProjectMembers时.过滤器将SQL添加到LEFT JOIN,而不是WHERE子句,使得过滤器无用,因为它将返回所有ProjectMembers,即使它们不是来自客户端1.
SELECT *
FROM projects p
LEFT JOIN project_members pm ON pm.project_id = p.id
AND p.client_id = 1 #(appended by the filter)
Run Code Online (Sandbox Code Playgroud)
这是我的addFilterConstrait
public function addFilterConstraint(ClassMetaData $targetEntity, $targetTableAlias)
{
$class = $targetEntity->getName();
if (array_key_exists($class, $this->disabled) && $this->disabled[$class] === true) {
return '';
} elseif (array_key_exists($targetEntity->rootEntityName, $this->disabled) && $this->disabled[$targetEntity->rootEntityName] === true) {
return '';
}
$config …Run Code Online (Sandbox Code Playgroud) 我在SQL命令中遇到问题.
我有一个问题表,其他问题的答案,以及其他用户的回复.
想象一下以下示例:
问题1:谁将赢得半决赛?
Aswners:A)葡萄牙B)西班牙
回复:10人投票B)西班牙,0人投票A)葡萄牙
SELECT a.answer, COUNT(r.id) as total
FROM replies r
LEFT JOIN answers a ON a.id = r.id_answer
LEFT JOIN questions q ON q.id = a.id_question
WHERE q.id = 1
GROUP BY r.id_answer
Run Code Online (Sandbox Code Playgroud)
我的观点是从
SELECT结果中得出:
西班牙10
葡萄牙0
但我不能,我不知道该怎么做,因为我的方式,我总是得到回复表上的回复结果.像这样:
西班牙10