Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / Models / CMS / CmsUser.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/Models/CMS/CmsUser.php b/vendor/doctrine/orm/tests/Doctrine/Tests/Models/CMS/CmsUser.php
new file mode 100644 (file)
index 0000000..2bae6ed
--- /dev/null
@@ -0,0 +1,437 @@
+<?php
+
+namespace Doctrine\Tests\Models\CMS;
+
+use Doctrine\Common\Collections\ArrayCollection;
+
+/**
+ * @Entity
+ * @Table(name="cms_users")
+ * @NamedQueries({
+ *     @NamedQuery(name="all", query="SELECT u FROM __CLASS__ u")
+ * })
+ *
+ * @NamedNativeQueries({
+ *      @NamedNativeQuery(
+ *          name           = "fetchIdAndUsernameWithResultClass",
+ *          resultClass    = "CmsUser",
+ *          query          = "SELECT id, username FROM cms_users WHERE username = ?"
+ *      ),
+ *      @NamedNativeQuery(
+ *          name           = "fetchAllColumns",
+ *          resultClass    = "CmsUser",
+ *          query          = "SELECT * FROM cms_users WHERE username = ?"
+ *      ),
+ *      @NamedNativeQuery(
+ *          name            = "fetchJoinedAddress",
+ *          resultSetMapping= "mappingJoinedAddress",
+ *          query           = "SELECT u.id, u.name, u.status, a.id AS a_id, a.country, a.zip, a.city FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id WHERE u.username = ?"
+ *      ),
+ *      @NamedNativeQuery(
+ *          name            = "fetchJoinedPhonenumber",
+ *          resultSetMapping= "mappingJoinedPhonenumber",
+ *          query           = "SELECT id, name, status, phonenumber AS number FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username = ?"
+ *      ),
+ *      @NamedNativeQuery(
+ *          name            = "fetchUserPhonenumberCount",
+ *          resultSetMapping= "mappingUserPhonenumberCount",
+ *          query           = "SELECT id, name, status, COUNT(phonenumber) AS numphones FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username IN (?) GROUP BY id, name, status, username ORDER BY username"
+ *      ),
+ *      @NamedNativeQuery(
+ *          name            = "fetchMultipleJoinsEntityResults",
+ *          resultSetMapping= "mappingMultipleJoinsEntityResults",
+ *          query           = "SELECT u.id AS u_id, u.name AS u_name, u.status AS u_status, a.id AS a_id, a.zip AS a_zip, a.country AS a_country, COUNT(p.phonenumber) AS numphones FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id INNER JOIN cms_phonenumbers p ON u.id = p.user_id GROUP BY u.id, u.name, u.status, u.username, a.id, a.zip, a.country ORDER BY u.username"
+ *      ),
+ * })
+ *
+ * @SqlResultSetMappings({
+ *      @SqlResultSetMapping(
+ *          name    = "mappingJoinedAddress",
+ *          entities= {
+ *              @EntityResult(
+ *                  entityClass = "__CLASS__",
+ *                  fields      = {
+ *                      @FieldResult(name = "id"),
+ *                      @FieldResult(name = "name"),
+ *                      @FieldResult(name = "status"),
+ *                      @FieldResult(name = "address.zip"),
+ *                      @FieldResult(name = "address.city"),
+ *                      @FieldResult(name = "address.country"),
+ *                      @FieldResult(name = "address.id", column = "a_id"),
+ *                  }
+ *              )
+ *          }
+ *      ),
+ *      @SqlResultSetMapping(
+ *          name    = "mappingJoinedPhonenumber",
+ *          entities= {
+ *              @EntityResult(
+ *                  entityClass = "CmsUser",
+ *                  fields      = {
+ *                      @FieldResult("id"),
+ *                      @FieldResult("name"),
+ *                      @FieldResult("status"),
+ *                      @FieldResult("phonenumbers.phonenumber" , column = "number"),
+ *                  }
+ *              )
+ *          }
+ *      ),
+ *      @SqlResultSetMapping(
+ *          name    = "mappingUserPhonenumberCount",
+ *          entities= {
+ *              @EntityResult(
+ *                  entityClass = "CmsUser",
+ *                  fields      = {
+ *                      @FieldResult(name = "id"),
+ *                      @FieldResult(name = "name"),
+ *                      @FieldResult(name = "status"),
+ *                  }
+ *              )
+ *          },
+ *          columns = {
+ *              @ColumnResult("numphones")
+ *          }
+ *      ),
+ *      @SqlResultSetMapping(
+ *          name    = "mappingMultipleJoinsEntityResults",
+ *          entities= {
+ *              @EntityResult(
+ *                  entityClass = "__CLASS__",
+ *                  fields      = {
+ *                      @FieldResult(name = "id",       column="u_id"),
+ *                      @FieldResult(name = "name",     column="u_name"),
+ *                      @FieldResult(name = "status",   column="u_status"),
+ *                  }
+ *              ),
+ *              @EntityResult(
+ *                  entityClass = "CmsAddress",
+ *                  fields      = {
+ *                      @FieldResult(name = "id",       column="a_id"),
+ *                      @FieldResult(name = "zip",      column="a_zip"),
+ *                      @FieldResult(name = "country",  column="a_country"),
+ *                  }
+ *              )
+ *          },
+ *          columns = {
+ *              @ColumnResult("numphones")
+ *          }
+ *      )
+ * })
+ */
+class CmsUser
+{
+    /**
+     * @Id @Column(type="integer")
+     * @GeneratedValue
+     */
+    public $id;
+    /**
+     * @Column(type="string", length=50, nullable=true)
+     */
+    public $status;
+    /**
+     * @Column(type="string", length=255, unique=true)
+     */
+    public $username;
+    /**
+     * @Column(type="string", length=255)
+     */
+    public $name;
+    /**
+     * @OneToMany(targetEntity="CmsPhonenumber", mappedBy="user", cascade={"persist", "merge"}, orphanRemoval=true)
+     */
+    public $phonenumbers;
+    /**
+     * @OneToMany(targetEntity="CmsArticle", mappedBy="user", cascade={"detach"})
+     */
+    public $articles;
+    /**
+     * @OneToOne(targetEntity="CmsAddress", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
+     */
+    public $address;
+    /**
+     * @OneToOne(targetEntity="CmsEmail", inversedBy="user", cascade={"persist"}, orphanRemoval=true)
+     * @JoinColumn(referencedColumnName="id", nullable=true)
+     */
+    public $email;
+    /**
+     * @ManyToMany(targetEntity="CmsGroup", inversedBy="users", cascade={"persist", "merge", "detach"})
+     * @JoinTable(name="cms_users_groups",
+     *      joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
+     *      inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")}
+     *      )
+     */
+    public $groups;
+
+    public $nonPersistedProperty;
+
+    public $nonPersistedPropertyObject;
+
+    public function __construct() {
+        $this->phonenumbers = new ArrayCollection;
+        $this->articles = new ArrayCollection;
+        $this->groups = new ArrayCollection;
+    }
+
+    public function getId() {
+        return $this->id;
+    }
+
+    public function getStatus() {
+        return $this->status;
+    }
+
+    public function getUsername() {
+        return $this->username;
+    }
+
+    public function getName() {
+        return $this->name;
+    }
+
+    /**
+     * Adds a phonenumber to the user.
+     *
+     * @param CmsPhonenumber $phone
+     */
+    public function addPhonenumber(CmsPhonenumber $phone) {
+        $this->phonenumbers[] = $phone;
+        $phone->setUser($this);
+    }
+
+    public function getPhonenumbers() {
+        return $this->phonenumbers;
+    }
+
+    public function addArticle(CmsArticle $article) {
+        $this->articles[] = $article;
+        $article->setAuthor($this);
+    }
+
+    public function addGroup(CmsGroup $group) {
+        $this->groups[] = $group;
+        $group->addUser($this);
+    }
+
+    public function getGroups() {
+        return $this->groups;
+    }
+
+    public function removePhonenumber($index) {
+        if (isset($this->phonenumbers[$index])) {
+            $ph = $this->phonenumbers[$index];
+            unset($this->phonenumbers[$index]);
+            $ph->user = null;
+            return true;
+        }
+        return false;
+    }
+
+    public function getAddress() { return $this->address; }
+
+    public function setAddress(CmsAddress $address) {
+        if ($this->address !== $address) {
+            $this->address = $address;
+            $address->setUser($this);
+        }
+    }
+
+    public function getEmail() { return $this->email; }
+
+    public function setEmail(CmsEmail $email = null) {
+        if ($this->email !== $email) {
+            $this->email = $email;
+
+            if ($email) {
+                $email->setUser($this);
+            }
+        }
+    }
+
+    public static function loadMetadata(\Doctrine\ORM\Mapping\ClassMetadataInfo $metadata)
+    {
+        $metadata->setPrimaryTable(array(
+           'name' => 'cms_users',
+        ));
+
+        $metadata->addNamedNativeQuery(array (
+            'name'              => 'fetchIdAndUsernameWithResultClass',
+            'query'             => 'SELECT id, username FROM cms_users WHERE username = ?',
+            'resultClass'       => 'Doctrine\\Tests\\Models\\CMS\\CmsUser',
+        ));
+
+        $metadata->addNamedNativeQuery(array (
+            'name'              => 'fetchAllColumns',
+            'query'             => 'SELECT * FROM cms_users WHERE username = ?',
+            'resultClass'       => 'Doctrine\\Tests\\Models\\CMS\\CmsUser',
+        ));
+
+        $metadata->addNamedNativeQuery(array (
+            'name'              => 'fetchJoinedAddress',
+            'query'             => 'SELECT u.id, u.name, u.status, a.id AS a_id, a.country, a.zip, a.city FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id WHERE u.username = ?',
+            'resultSetMapping'  => 'mappingJoinedAddress',
+        ));
+
+        $metadata->addNamedNativeQuery(array (
+            'name'              => 'fetchJoinedPhonenumber',
+            'query'             => 'SELECT id, name, status, phonenumber AS number FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username = ?',
+            'resultSetMapping'  => 'mappingJoinedPhonenumber',
+        ));
+
+        $metadata->addNamedNativeQuery(array (
+            'name'              => 'fetchUserPhonenumberCount',
+            'query'             => 'SELECT id, name, status, COUNT(phonenumber) AS numphones FROM cms_users INNER JOIN cms_phonenumbers ON id = user_id WHERE username IN (?) GROUP BY id, name, status, username ORDER BY username',
+            'resultSetMapping'  => 'mappingUserPhonenumberCount',
+        ));
+
+        $metadata->addNamedNativeQuery(array (
+            "name"              => "fetchMultipleJoinsEntityResults",
+            "resultSetMapping"  => "mappingMultipleJoinsEntityResults",
+            "query"             => "SELECT u.id AS u_id, u.name AS u_name, u.status AS u_status, a.id AS a_id, a.zip AS a_zip, a.country AS a_country, COUNT(p.phonenumber) AS numphones FROM cms_users u INNER JOIN cms_addresses a ON u.id = a.user_id INNER JOIN cms_phonenumbers p ON u.id = p.user_id GROUP BY u.id, u.name, u.status, u.username, a.id, a.zip, a.country ORDER BY u.username"
+        ));
+
+        $metadata->addSqlResultSetMapping(array (
+            'name'      => 'mappingJoinedAddress',
+            'columns'   => array(),
+            'entities'  => array(array (
+                'fields'=> array (
+                  array (
+                    'name'      => 'id',
+                    'column'    => 'id',
+                  ),
+                  array (
+                    'name'      => 'name',
+                    'column'    => 'name',
+                  ),
+                  array (
+                    'name'      => 'status',
+                    'column'    => 'status',
+                  ),
+                  array (
+                    'name'      => 'address.zip',
+                    'column'    => 'zip',
+                  ),
+                  array (
+                    'name'      => 'address.city',
+                    'column'    => 'city',
+                  ),
+                  array (
+                    'name'      => 'address.country',
+                    'column'    => 'country',
+                  ),
+                  array (
+                    'name'      => 'address.id',
+                    'column'    => 'a_id',
+                  ),
+                ),
+                'entityClass'           => 'Doctrine\Tests\Models\CMS\CmsUser',
+                'discriminatorColumn'   => null
+              ),
+            ),
+        ));
+
+        $metadata->addSqlResultSetMapping(array (
+            'name'      => 'mappingJoinedPhonenumber',
+            'columns'   => array(),
+            'entities'  => array(array(
+                'fields'=> array (
+                  array (
+                    'name'      => 'id',
+                    'column'    => 'id',
+                  ),
+                  array (
+                    'name'      => 'name',
+                    'column'    => 'name',
+                  ),
+                  array (
+                    'name'      => 'status',
+                    'column'    => 'status',
+                  ),
+                  array (
+                    'name'      => 'phonenumbers.phonenumber',
+                    'column'    => 'number',
+                  ),
+                ),
+                'entityClass'   => 'Doctrine\\Tests\\Models\\CMS\\CmsUser',
+                'discriminatorColumn'   => null
+              ),
+            ),
+        ));
+
+        $metadata->addSqlResultSetMapping(array (
+            'name'      => 'mappingUserPhonenumberCount',
+            'columns'   => array(),
+            'entities'  => array (
+              array(
+                'fields' => array (
+                  array (
+                    'name'      => 'id',
+                    'column'    => 'id',
+                  ),
+                  array (
+                    'name'      => 'name',
+                    'column'    => 'name',
+                  ),
+                  array (
+                    'name'      => 'status',
+                    'column'    => 'status',
+                  )
+                ),
+                'entityClass'   => 'Doctrine\Tests\Models\CMS\CmsUser',
+                'discriminatorColumn'   => null
+              )
+            ),
+            'columns' => array (
+                  array (
+                    'name' => 'numphones',
+                  )
+            )
+        ));
+        
+        $metadata->addSqlResultSetMapping(array(
+            'name'      => 'mappingMultipleJoinsEntityResults',
+            'entities'  => array(array(
+                    'fields' => array(
+                        array(
+                            'name'      => 'id',
+                            'column'    => 'u_id',
+                        ),
+                        array(
+                            'name'      => 'name',
+                            'column'    => 'u_name',
+                        ),
+                        array(
+                            'name'      => 'status',
+                            'column'    => 'u_status',
+                        )
+                    ),
+                    'entityClass'           => 'Doctrine\Tests\Models\CMS\CmsUser',
+                    'discriminatorColumn'   => null,
+                ),
+                array(
+                    'fields' => array(
+                        array(
+                            'name'      => 'id',
+                            'column'    => 'a_id',
+                        ),
+                        array(
+                            'name'      => 'zip',
+                            'column'    => 'a_zip',
+                        ),
+                        array(
+                            'name'      => 'country',
+                            'column'    => 'a_country',
+                        ),
+                    ),
+                    'entityClass'           => 'Doctrine\Tests\Models\CMS\CmsAddress',
+                    'discriminatorColumn'   => null,
+                ),
+            ),
+            'columns' => array(array(
+                    'name' => 'numphones',
+                )
+            )
+        ));
+
+    }
+}