我正在使用FOSUserBundle。爲什麼__construct方法在FOSUserBundle的User Entity中不起作用?
這是User
實體:
namespace Shop\UserBundle\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;
protected $shop;
public function __construct()
{
$this->shop = 'shop';
parent::__construct();
}
public function getShop()
{
return $this->shop;
}
}
當我打電話getShop
控制器:
$user = $this->getUser()->getShop()
結果是空
爲什麼不__construct
工作User
類? 我預計將有「店」的字符串作爲默認
確定'$這個 - >的getUser()'做什麼你認爲它呢?你不提供代碼,所以我只能假設它檢索一個現有的用戶而不是調用'new',因此''__construct()'不會被觸發。試試'$ user = new \ Shop \ UserBundle \ Entity \ User(); $ user-> getShop();'看看它是否工作... – dbrumann 2013-04-10 19:09:06
是的。其作品。但是,如果我使用$ this-> getUser() - > getShop()它不起作用。但get_class($ this-> getUser()) - 'Shop \ UserBundle \ Entity \ User' – melnikoved 2013-04-10 20:11:21
如下面的答案所述,您必須將該屬性添加到映射中。通過添加註釋,然後更新模式:'php app/console doctrine:schema:update --force'。否則,你的財產將不會被保存,因此當你檢索一個先前持久的用戶時將是空的。 – dbrumann 2013-04-11 16:49:58