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

标签 symfony doctrine-orm entity

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

相关文章:

php - Symfony 根据日期计算天数

php - Composer 无法在 symfony 4 上要求 symfony/symfony

php - 过滤与 Doctrine 2 中的标准对象的关联

c# - 对现有 Entity Framework 对象的 PUT 请求

symfony - 动态 Twig 变量名称

php - 登录表单不起作用,在 Symfony2 中提交后继续加载

php - Doctrine 2 - 记录多对多关系中的更改

Symfony2 : How to filter the options of an entity-choice form field by a certain attribute?

java - 从 JPA/Hibernate 中的 View 加载实体

java - 从实体生成表