从symfony2 Doctrine的结果中获取对象的价值

时间:2014-08-10 13:45:23

标签: php symfony doctrine-orm

我尝试从User Entity获取数据库ID值。

            $id = $this->getDoctrine()->getRepository('MyappUserBundle:User')->findByUsername($username);

我明白了:

Array
(
    [0] => MyApp\UserBundle\Entity\User Object
        (
            [id:protected] => 1
            [age:protected] => 22
            [city:protected] => 
            [state:protected] => 
            [sex:protected] => 
            [avatar:protected] => 99small-man-dancing-with-cat.jpg
            [username:protected] => yeps
etc...

我有疑问:

如何从此对象获取id值?

2 个答案:

答案 0 :(得分:1)

findByX返回一个数组,其中findOneByX将返回单个对象。

在您搜索特定用户名时,会发送更多内容以使用findOneByX,然后您可以从返回id中获取User,例如..

$user = $this->getDoctrine()
    ->getRepository('MyappUserBundle:User')
    ->findOneByUsername($username)
;

$id = $user->getId();

添加空检查也没有意义,因为没有找到像..

的用户
if (null === $user) {
    throw new \Exception(sprintf('User with username "%s" not found', $username));
}

$id = $user->getId();

答案 1 :(得分:0)

" findByUsername"方法返回一个User对象,所以为了获取用户id(假设你的用户实体中已经有一个" getId"公共函数),你必须做这样的事情:

$user = $this->getDoctrine()->getRepository('MyappUserBundle:User')->findByUsername($username);
$userId = $user->getId();