Сущности и отображения в учении - PullRequest
0 голосов
/ 05 февраля 2012

Я пытаюсь выучить Doctrine2, и у меня возникли проблемы с тем, чтобы обернуть свой мозг вокруг сущностей и отображений и как извлечь данные из БД.

Если я правильно понимаю, сущность будет создана для данных в моей базе данных, таких как пользователь или продукт.

Вот тут я и зацикливаюсь. У меня есть простая база данных с таблицами, такими как пользователь и тому подобное. Нужно ли создавать сущность с именем «Пользователь»? И извлекает ли эта сущность данные из таблицы User, а затем я получаю данные из сущности User?

Может ли кто-нибудь предоставить мне пример кода того, как я это сделаю?

1 Ответ

0 голосов
/ 05 февраля 2012

Объекты - это обычные классы PHP ... Сначала вам нужно создать свою таблицу, а затем создать свою сущность.Свойства класса должны быть приватными с сеттерами и геттерами и обычно с теми же именами, что и поля в таблице.Когда вы хотите поместить новую запись в БД, вы должны создать экземпляр класса, который вам нужен, и установить значения, затем сохранить и сбросить менеджер сущностей.Пример кода:

    <?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'));
...