我正在尝试学习Doctrine2,并且在实体和映射中缠绕我的大脑时遇到了一些麻烦,以及如何从数据库中提取数据。
如果我理解正确,将为我的数据库中的数据创建一个实体,如用户或产品。
这就是我被挂断的地方。我有一个像User这样的表的简单数据库。我是否需要创建一个名为“用户”的实体?该实体是否从User表中提取数据,然后从User实体获取数据?
有人能为我提供一个代码示例,告诉我如何做到这一点吗?
答案 0 :(得分:0)
实体是常规PHP类...首先你必须创建你的表,然后你创建你的实体。类的属性应该是setter和getter的私有,并且通常与表中的字段具有相同的名称。当你想在DB中放入新记录时,你必须创建你想要的类的实例并设置值然后保持并刷新实体管理器。示例代码:
<?php
namespace Entity;
/**
* @Entity
* @Table(name="users")
*/
class User {
/** @Id
* @Column(type="integer")
* */
private $id;
/** @Column(type="string") */
private $username;
/** @Column(type="string") */
private $password;
/** @Column(type="boolean") */
private $active;
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getUsername() {
return $this->username;
}
public function setUsername($username) {
$this->username = $username;
}
public function getPassword() {
return $this->password;
}
public function setPassword($password) {
$this->password = $password;
}
public function getActive() {
return $this->active;
}
public function setActive($active) {
$this->active = $active;
}
}
当你想要一个新记录时:
$user = new Entity\User();
$user->setName('users name');
$user->setPassword('password');
$entityManager->persist($user); // put that entity in queue;
$entityManager->flush(); // execute all pending entities
如果你想获得现有记录
$found = $entityManager->find('className', $id); // search by id
or $entityManager->getRepository('className')->findOneBy(array('field', 'value'));