2012-02-04 8 views
0

私はDoctrine2を学びたいと思っています。エンティティとマッピングの周りに私の頭脳をラップするのにいくつか問題があり、dbからデータを引き出す方法があります。Doctrineのエンティティとマッピング

私が正しく理解していれば、ユーザーまたは製品のように、データベース内のデータに対してエンティティが作成されます。

私はハングアップしています。私はUserやそのようなテーブルを持つシンプルなデータベースを持っています。 「User」というエンティティを作成する必要がありますか?そのエンティティはUserテーブルからデータを取得し、Userエンティティからデータを取得しますか?

私はこれをどのように行うのかのコード例を誰かに教えてもらえますか?

答えて

0

エンティティは通常のPHPクラスです...まず、あなたはURテーブルを作成してから、あなたのエンティティを作成しなければなりません。クラスのプロパティは、セッターとゲッターでプライベートにする必要があります。通常は、テーブルのフィールドと同じ名前にしてください。 UがDBに新しいレコードを入れたい場合は、クラスUのインスタンスを作成して値を設定してから、エンティティマネージャを永続させてフラッシュしなければなりません。コード例:

<?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が新しいレコード配置する: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 

関連する問題