学说中的实体和映射

时间:2012-02-04 20:22:49

标签: php doctrine

我正在尝试学习Doctrine2,并且在实体和映射中缠绕我的大脑时遇到了一些麻烦,以及如何从数据库中提取数据。

如果我理解正确,将为我的数据库中的数据创建一个实体,如用户或产品。

这就是我被挂断的地方。我有一个像User这样的表的简单数据库。我是否需要创建一个名为“用户”的实体?该实体是否从User表中提取数据,然后从User实体获取数据?

有人能为我提供一个代码示例,告诉我如何做到这一点吗?

1 个答案:

答案 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'));