Symfony 未定义的偏移量:0。条令与本机sql

Symfony 未定义的偏移量:0。条令与本机sql,symfony,doctrine-orm,fosuserbundle,Symfony,Doctrine Orm,Fosuserbundle,我有一个小问题,我想打印用户的id,但我有一个错误:“未定义的offest:0”。这是我的密码: $rsm = new ResultSetMapping(); $em = $this->getDoctrine()->getManager(); $user= $this->get('security.context')->getToken()->getUser(); $query = $em->createNativeQuery('SELECT id FROM

我有一个小问题,我想打印用户的id,但我有一个错误:“未定义的offest:0”。这是我的密码:

$rsm = new ResultSetMapping();
$em = $this->getDoctrine()->getManager(); 
$user= $this->get('security.context')->getToken()->getUser();
$query = $em->createNativeQuery('SELECT id FROM fos_user WHERE username_canonical = ?', $rsm);
$query->setParameter(1, $user);
$users = $query->getResult();
echo $users[0]['id'];
有人知道怎么回事吗?

更改字符串:

$query->setParameter(1, $user);

  • EntityResult
    FieldResult
    添加到
    $rsm

    $rsm = new ResultSetMapping();
    $rsm->addEntityResult('App\UserBundle\Entity\User', 'u');
    $rsm->addFieldResult('u', 'id', 'id');
    
  • 更改
    setParameter

    $user$user->getUsernameCononical()

  • 获得结果

    foreach($users as $user)
    {
        echo $user->getId();
    }
    

  • 错误是因为您正在使用用户对象($user)作为查询参数。查询不返回任何用户,您尝试获取未定义的偏移量。如果您已经从安全上下文中获得了用户对象,则不需要在数据库中找到它来获取id。一个简单的
    echo$user->getId()
    应该会告诉您需要什么。
    foreach($users as $user)
    {
        echo $user->getId();
    }