После импорта схемы БД в Symfony2 проблема с файлами конфигурации Doctrine2 - PullRequest
0 голосов
/ 14 ноября 2011

РЕДАКТИРОВАТЬ: Новый выпуск

У меня есть кое-что новое:

Я почти уверен, что все это испортили XML-файлы.

Вот как я поступил:

  1. Я создал собственную схему базы данных
  2. Я создал базу данных (скрипт sql)
  3. Я перепроектировал базу данных
  4. Я исправил связи между таблицами.

В моем репозитории XML: src / Creasixtine / AFBundle / Resources / config / doctrine / metadata / orm

У меня есть все сущности:

Blobs.orm.xml    Lieu.orm.xml    Operationrre.orm.xml  Pn.orm.xml              Roles.orm.xml  Service.orm.xml  Typeoperationmaintenance.orm.xml
Famille.orm.xml  Module.orm.xml  Outilsn.orm.xml       Rolepermission.orm.xml  Rre.orm.xml    Session.orm.xml  Utilisateur.orm.xml

А вот, например, XML-файл Utilisateur:

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Utilisateur" table="UTILISATEUR">
    <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
    <id name="userid" type="integer" column="USERID">
      <generator strategy="IDENTITY"/>
    </id>
    <field name="userdatecreation" type="date" column="USERDATECREATION"/>
    <field name="userdatevalidation" type="date" column="USERDATEVALIDATION"/>
    <field name="usermail" type="string" column="USERMAIL" length="255"/>
    <field name="userpass" type="string" column="USERPASS" length="255"/>
    <field name="uservalide" type="boolean" column="USERVALIDE"/>
    <lifecycle-callbacks/>
  </entity>
</doctrine-mapping>

И с этим я получаю:

Примечание: неопределенный индекс: идентификатор в /home/adrien/dev/air-france_alphanum/vendor/doctrine/lib/Doctrine/ORM/UnitOfWork.php строка 1969

Старый пост

Я (давно) импортировал схему базы данных.

У меня есть организация / класс Utilisateur. Я успешно создаю новые записи в своей таблице Utilisateur, выполнив:

function newUser($login, $name, $mail, $pass)
    {
        $obj = new Utilisateur();
        $obj->setUsermail($mail);
        $obj->setUserpass($pass);
        $obj->setUserlogin($login);
        $obj->setUsername($name);

        $em = $this->getDoctrine()->getEntityManager();
        $em->persist($obj);
        $em->flush();

    }

Теперь, что не будет работать: я хотел бы получить существующих пользователей в базе данных:

    $em = $this->container->get('doctrine')->getEntityManager();
    $rre_repository = $em->getRepository('GoogleAFBundle:Utilisateur');
    $users = $rre_repository->findAll();

И я получаю исключение:

Notice: Undefined index: Google\AFBundle\Entity\Utilisateur in /home/adrien/dev/air-france_alphanum/vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/AbstractFileDriver.php line 121

Вот класс Utilisateur:

<?php

namespace Google\AFBundle\Entity;

use Symfony\Tests\Component\Translation\String;

use Doctrine\ORM\Mapping as ORM;

/**
 * Google\AFBundle\Entity\Utilisateur
 *
 * @ORM\Table(name="UTILISATEUR")
 * @ORM\Entity
 */
class Utilisateur
{
    /**
     * @var integer $userid
     *
     * @ORM\Column(name="USERID", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $userid;

    /**
    * @var string $userlogin
    *
    * @ORM\Column(name="USERLOGIN", type="string", length=31, nullable=false)
    */
    private $userlogin;

    /**
    * @var string $username
    *
    * @ORM\Column(name="USERNAME", type="string", length=255, nullable=true)
    */
    private $username;

    /**
     * @var date $userdatecreation
     *
     * @ORM\Column(name="USERDATECREATION", type="date", nullable=true)
     */
    private $userdatecreation;

    /**
     * @var date $userdatevalidation
     *
     * @ORM\Column(name="USERDATEVALIDATION", type="date", nullable=true)
     */
    private $userdatevalidation;

    /**
     * @var string $usermail
     *
     * @ORM\Column(name="USERMAIL", type="string", length=255, nullable=true)
     */
    private $usermail;

    /**
     * @var string $userpass
     *
     * @ORM\Column(name="USERPASS", type="string", length=255, nullable=true)
     */
    private $userpass;

    /**
     * @var boolean $uservalide
     *
     * @ORM\Column(name="USERVALIDE", type="boolean", nullable=true)
     */
    private $uservalide;

    /**
    * @ORM\OneToMany(targetEntity="Utilroles", mappedBy="userid")
    */
    private $utilroles;

    /**
    * @ORM\OneToMany(targetEntity="Connexion", mappedBy="userid")
    */
    private $connexions;

    /**
     * Get userid
     *
     * @return integer
     */
    public function getUserid()
    {
        return $this->userid;
    }

    /**
     * Set userdatecreation
     *
     * @param date $userdatecreation
     */
    public function setUserdatecreation($userdatecreation)
    {
        $this->userdatecreation = $userdatecreation;
    }

    /**
     * Get userdatecreation
     *
     * @return date
     */
    public function getUserdatecreation()
    {
        return $this->userdatecreation;
    }

    /**
     * Set userdatevalidation
     *
     * @param date $userdatevalidation
     */
    public function setUserdatevalidation($userdatevalidation)
    {
        $this->userdatevalidation = $userdatevalidation;
    }

    /**
     * Get userdatevalidation
     *
     * @return date
     */
    public function getUserdatevalidation()
    {
        return $this->userdatevalidation;
    }

    /**
     * Set usermail
     *
     * @param string $usermail
     */
    public function setUsermail($usermail)
    {
        $this->usermail = $usermail;
    }

    /**
     * Get usermail
     *
     * @return string
     */
    public function getUsermail()
    {
        return $this->usermail;
    }

    /**
     * Set userpass
     *
     * @param string $userpass
     */
    public function setUserpass($userpass)
    {
        $this->userpass = $userpass;
    }

    /**
     * Get userpass
     *
     * @return string
     */
    public function getUserpass()
    {
        return $this->userpass;
    }

    /**
     * Set uservalide
     *
     * @param boolean $uservalide
     */
    public function setUservalide($uservalide)
    {
        $this->uservalide = $uservalide;
    }

    /**
     * Get uservalide
     *
     * @return boolean
     */
    public function getUservalide()
    {
        return $this->uservalide;
    }
    public function __construct()
    {
        $this->utilroles = new DoctrineCommonCollectionsArrayCollection();
    $this->connexions = new DoctrineCommonCollectionsArrayCollection();
    }

    /**
     * Add utilroles
     *
     * @param Google\AFBundle\Entity\Utilroles $utilroles
     */
    public function addUtilroles(GoogleAFBundleEntityUtilroles $utilroles)
    {
        $this->utilroles[] = $utilroles;
    }

    /**
     * Get utilroles
     *
     * @return Doctrine\Common\Collections\Collection
     */
    public function getUtilroles()
    {
        return $this->utilroles;
    }

    /**
     * Add connexions
     *
     * @param Google\AFBundle\Entity\Connexion $connexions
     */
    public function addConnexions(GoogleAFBundleEntityConnexion $connexions)
    {
        $this->connexions[] = $connexions;
    }

    /**
     * Get connexions
     *
     * @return Doctrine\Common\Collections\Collection
     */
    public function getConnexions()
    {
        return $this->connexions;
    }

    /**
    * Set username
    *
    * @return Doctrine\Common\Collections\Collection
    */
    public function setUsername($username)
    {
        $this->username = $username;
    }

    /**
    * Get username
    *
    * @return string
    */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * Set userlogin
     *
     * @return Doctrine\Common\Collections\Collection
     */
    public function setUserlogin($userlogin)
    {
        $this->userlogin = $userlogin;
    }

    /**
    * Get userlogin
    *
    * @return string
    */
    public function getUserlogin()
    {
        return $this->userlogin;
    }

}

Если кто-то может помочь, я был бы очень признателен.

Ответы [ 2 ]

1 голос
/ 14 ноября 2011

Может быть, я ошибаюсь, но я думаю, что вы неправильно указали пространство имен в вашем файле сущности.

namespace GoogleAFBundleEntity;

Должно быть:

namespace GoogleAFBundle\Entity;

Надеюсьэто помогает!

0 голосов
/ 15 ноября 2011

Мне это удалось.

Фактически все поля базы данных (mysql) были сгенерированы в верхнем регистре. Мое поле $userlogin должно было отображаться в базе данных на USERLOGIN, как показано ниже:

/**
* @var string $userlogin
*
* @ORM\Column(name="USERLOGIN", type="string", length=31, nullable=false)
*/
private $userlogin;

Я исправил все поля, и он работает правильно.

...