2013-02-11 127 views
0

我想从继承自FOSUserBundle的User类使用get方法。但我有一个错误:致命错误:调用用户的成员函数

Fatal error: Call to a member function getNom() on a non-object.

我的用户类别:

<?php 
namespace Olr\LoanBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=255) 
    * 
    */ 
    protected $nom; 

    /** 
    * @ORM\Column(type="string", length=255) 
    * 
    */ 
    protected $prenom; 

    /** 
    * @ORM\Column(type="string", length=50) 
    * 
    */ 
    protected $adresse; 

    /** 
    * @ORM\Column(type="string", length=50) 
    * 
    */ 
    protected $adresse2; 

    /** 
    * @ORM\Column(type="string", length=5) 
    * 
    */ 
    protected $cp; 

    /** 
    * @ORM\Column(type="string", length=50) 
    * 
    */ 
    protected $ville; 


    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set nom 
    * 
    * @param string $nom 
    */ 
    public function setNom($nom) 
    { 
     $this->nom = $nom; 
    } 

    /** 
    * Get nom 
    * 
    * @return string 
    */ 
    public function getNom() 
    { 
     return $this->nom; 
    } 

    /** 
    * Set prenom 
    * 
    * @param string $prenom 
    */ 
    public function setPrenom($prenom) 
    { 
     $this->prenom = $prenom; 
    } 

    /** 
    * Get prenom 
    * 
    * @return string 
    */ 
    public function getPrenom() 
    { 
     return $this->prenom; 
    } 

    /** 
    * Set adresse 
    * 
    * @param string $adresse 
    */ 
    public function setAdresse($adresse) 
    { 
     $this->adresse = $adresse; 
    } 

    /** 
    * Get adresse 
    * 
    * @return string 
    */ 
    public function getAdresse() 
    { 
     return $this->adresse; 
    } 

    /** 
    * Set adresse2 
    * 
    * @param string $adresse2 
    */ 
    public function setAdresse2($adresse2) 
    { 
     $this->adresse2 = $adresse2; 
    } 

    /** 
    * Get adresse2 
    * 
    * @return string 
    */ 
    public function getAdresse2() 
    { 
     return $this->adresse2; 
    } 

    /** 
    * Set cp 
    * 
    * @param string $cp 
    */ 
    public function setCp($cp) 
    { 
     $this->cp = $cp; 
    } 

    /** 
    * Get cp 
    * 
    * @return string 
    */ 
    public function getCp() 
    { 
     return $this->cp; 
    } 

    /** 
    * Set ville 
    * 
    * @param string $ville 
    */ 
    public function setVille($ville) 
    { 
     $this->ville = $ville; 
    } 

    /** 
    * Get ville 
    * 
    * @return string 
    */ 
    public function getVille() 
    { 
     return $this->ville; 
    } 
} 

从我CONTROLER:

public function invitationAction($token) 
{ 
    $em = $this->getDoctrine()->getEntityManager(); 
    $entity = $em->getRepository('OlrLoanBundle:User')->findBy(array('salt'=>$token)); 

    return $this->render('OlrLoanBundle:Tribu:invitation.html.twig', 
     array('nom'=>$entity->getNom(), 
       'prenom'=>$entity->getPrenom(), 
      )); 
} 

回答

5

findBy()返回array,所以你不能调用它的方法。

+0

我怎样才能得到我的数据?我不理解返回数组的结构: array(1){ [0] => object(Olr \ LoanBundle \ Entity \ User)#552(25){ [“id”:protected] = > INT(6) [ “NOM”:保护] => 串(7) “候梅叶” [ “prenom”:保护] => 串(7) “奥力” ... } } – Olivier 2013-02-11 22:13:51

+0

好吧,它是一个数组,并且......你可以像访问每个数组一样访问它http://php.net/language.types.array所以在你的情况下:'$ entity [0] - > getNom()'例如。或'current($ entity) - > getNom()'。或者'list($ entity)= $ entity; $实体 - > getNom();'。始终注意空阵列。 – KingCrunch 2013-02-11 22:27:26

+1

返回值是一个“Olr \ LoanBundle \ Entity \ User”对象的数组。如果你知道与salt相关的每条记录都是唯一的,你可以使用'findOneBy()'来返回一个单独的对象而不是一个数组。 – theunraveler 2013-02-11 22:29:57

相关问题