如何使用symfony在实体类中调用doctrine

Ran*_*hir 1 entity symfony doctrine-orm

我的应用程序使用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();
}

}
Run Code Online (Sandbox Code Playgroud)

我的控制器方法如下:

   public function test(){

    $create = new Users('Rajat');

    $create->save();

 }
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 5

您的保存方法正在尝试呼叫

$this->getDoctrine();

Whereby $this是当前的Class,以及它继承的任何其他Class.就目前而言,您当前的Class,User是独立的,并且没有getDoctrine()方法.如果您的类要扩展Controller类,它可以访问该方法:

class User extends Controller

我相信这个简单的修补程序将正常工作,但它可能没有任何真正意义上为它扩展控制器,因为它是一个用户实体,并无关的控制器.一种首选的,更高级的方法是将Doctrine服务注入User类.