我正在为我的应用程序使用 symfony 框架。为了在数据库中保存记录,我想调用 $this->getDoctrine()->getManager();我的实体类中的方法。但是当我这样做时,它给了我错误: 调用未定义的方法 getDoctrine(),
谁能告诉我这样做的正确方法是什么。
我的实体类是这样的:
命名空间 Acme\SuperbAppBundle\Entity;
使用 Symfony\Component\DependencyInjection\Container; 使用 Doctrine\ORM\Mapping 作为 ORM;
class Users
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $firstName;
/**
* @var string
*/
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set firstName
*
* @param string $firstName
* @return Users
*/
public function setFirstName($firstName)
{
$this->firstName = $firstName;
return $this;
}
/**
* Get firstName
*
* @return string
*/
public function getFirstName()
{
return $this->firstName;
}
function __construct($firstName){
$this->setFirstName($firstName);
}
function save(){
$em = $this->getDoctrine()->getManager();
$em->persist($create);
$em->flush();
}
}
我的 Controller 方法是这样的:
public function test(){
$create = new Users('Rajat');
$create->save();
}
最佳答案
您的保存方法正在尝试调用
$this->getDoctrine();
其中 $this
是当前类,以及它继承的任何其他类。就目前而言,您当前的类 User 是独立的,并且没有 getDoctrine()
方法。如果您的类要扩展 Controller 类,它将有权访问该方法:
class User extends Controller
我相信这个简单的修复会奏效,尽管扩展 Controller 可能没有实际意义,因为它是一个用户实体,与 Controller 无关。一种首选的、更高级的方法是将 Doctrine 服务注入(inject)到 User 类中。
关于symfony - 如何使用symfony在实体类中调用学说,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24504429/