Mysql 通过外键获取标签
这些是我的桌子 我的桌子是空的 用户表Mysql 通过外键获取标签,mysql,doctrine-orm,Mysql,Doctrine Orm,这些是我的桌子 我的桌子是空的 用户表 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
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),但我想显示标签名称
请给我一些提示
非常感谢在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吗?),因此请务必仔细阅读您的语言语法,正确设置准备语句以避免恶意用户的注入攻击。谢谢,这是非常有用的答案