这些是我的表。
我的桌子是
用户表
id Name Sex
1 bob 1
2 taro 1
3 can 2
性表
id label
1 male
2 female
User.sex是Sex.id的外键
我想得到的是如下所示
姓名性 鲍勃男 芋头女 可以女性
$query = $em->createQuery(
SELECT a,id,a.sex
FROM UserBundle:User a)
它说
[Semantical Error] line 0, col 97 near 'sex': Error: Invalid PathExpression. Must be a StateFieldPathExpression
我猜身份可以帮助解决这个问题。 所以我试过
$query = $em->createQuery(
SELECT a,id,IDENTITY(a.sex) AS sex
FROM UserBundle:User a)
$user = $query->getResult();
$user[0]['sex'] //
它显示'1'(id),但我要显示标签名称
请提供一些提示。非常感谢
答案 0 :(得分:1)
在SQL中完成此任务的规范方法是使用子查询。有什么影响:
Select u.name s.label
From user u, sex s
where s.ID in (Select sex
from u
where u.id = 1);
会为您提供标有性别的任何一条用户记录。 因此,您需要以运行子查询的方式修改准备好的语句。
对于结果集中的多个记录,您可以考虑使用内部联接来表示SQL语句。
Select u.name s.label
from user u inner join sex s
on u.sex = s.id;
会为您提供每个用户名称和性别标签的匹配集。
看起来你正在使用像脚本语言预处理语句功能(就是php?),所以一定要仔细阅读你的语言语法,正确设置准备好的语句以避免恶意用户的注入攻击