gpt4 book ai didi

symfony - 如何使用symfony在实体类中调用学说

转载 作者:行者123 更新时间:2023-12-05 09:22:52 26 4
gpt4 key购买 nike

我正在为我的应用程序使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com