从表中获取的列值从SQL查询的结果键
问题描述:
我有一个表结构 -从表中获取的列值从SQL查询的结果键
name grade
a 10
b 8
c 9
我写一个查询选择行,其中品位大于7,并希望结果这种格式
{
a: {grade: 10},
b: {grade: 8},
c: {grade: 9}
}
这里是我的查询
createQueryBuilder()
->select('x.name, x.grade as grade')
->from('gradesTable', 'x')
->where('x.grade > :threshold')
->setParameter('threshold', 7)
->getQuery()
->getResult();
有人能帮助呢?
答
的“从”功能有一个名为indexBy第三个参数。 Tha是你正在寻找的东西。你的查询应该看起来像这样。
....->createQueryBuilder()
->select('x.name, x.grade as grade')
->from('gradesTable', 'x', 'x.name')
->where('x.grade > :threshold')
->setParameter('threshold', 7)
->getQuery()
->getResult();
而结果会是这样的
{
a: {name: a, grade: 10},
b: {name: b, grade: 8},
c: {name: c, grade: 9}
}
不要从查询中删除名称。如果你不选择它,它将不起作用。 希望这有助于。
快乐编码,
亚历Cosoi
答
您可以使用MySQL的concat函数来产生所需的输出,例如:
select concat (name, ": {grade:", grade, "}")
from test
where grade > 8;
答
尝试:
createQueryBuilder()
->select('x.name, x.grade as grade')
->from('gradesTable', 'x')
->where('x.grade > :threshold')
->setParameter('threshold', 7)
->indexBy('x', 'x.name')
->getQuery()
->getResult();
或者:
createQueryBuilder('gradesTable', 'x', 'x.name')
->select('x.name, x.grade as grade')
->where('x.grade > :threshold')
->setParameter('threshold', 7)
->getQuery()
->getResult();
(或接受的答案:))
当使用createQuery()
您还可以使用的功能:
createQuery('SELECT x.name, x.grade as grade FROM gradesTable x INDEX BY x.name');
您正在使用哪个原则? – Nebi