0

这些是我的桌子。

我的桌子是

用户表

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)但我想显示标签名称

请给一些提示。

多谢

4

1 回答 1

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 吗?),因此请务必阅读您的语言语法以正确设置准备语句以避免来自恶意用户的注入攻击。

于 2013-06-15T11:08:37.323 回答