2012-02-04 4 views
0

Doctrine2를 배우려고 노력 중이며 엔티티와 매핑을 둘러싼 내 머리를 감싸는 데 어려움을 겪고 있으며 db에서 데이터를 가져 오는 방법을 알고 있습니다.Doctrine의 엔티티와 매핑

올바르게 이해하면 사용자 또는 제품처럼 내 데이터베이스의 데이터에 대해 엔티티가 생성됩니다.

그렇기 때문에 내가 매달려있다. 나는 User와 같은 테이블을 가진 간단한 데이터베이스를 가지고있다. "사용자"라고하는 엔티티를 만들어야합니까? 그리고 해당 엔티티가 User 테이블에서 데이터를 가져온 다음 User 엔티티에서 데이터를 가져 옵니까?

누군가 내가이 작업을 수행하는 방법에 대한 코드 예제를 제공 할 수 있습니까?

답변

0

엔티티는 일반 PHP 클래스입니다 ... 먼저 U 테이블을 작성한 다음 U 엔티티를 작성해야합니다. 클래스의 속성은 setter 및 getter를 사용하여 private이어야하며 일반적으로 테이블의 field와 동일한 이름을 사용해야합니다. U가 DB에 새로운 레코드를 넣으려고 할 때, 클래스 U의 인스턴스를 만들고 값을 설정 한 다음 엔티티 관리자를 유지하고 플러시해야합니다. 예제 코드 : u는 기록

$found = $entityManager->find('className', $id); // search by id 

or $entityManager->getRepository('className')->findOneBy(array('field', 'value')); 
에게 기존의 취득하려면

$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 

:

<?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; 
    } 

} 

와 u는 새로운 기록을 넣고 싶을 때