Kdyby\Doctrine – is missing an assigned ID for field ‚id‘

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mara11
Člen | 42
+
0
-

Ahoj, jsem v Doctrine nový, níže uvedenou hlášku jsem našel už na stackoverflow, ale tamní řešení mi vůbec nepomohlo:

Entity of type App\Model\User is missing an assigned ID for field ‚id‘. The identifier generation strategy for this entity requires the ID field to be populated before EntityManager#persist() is called. If you want automatically generated identifiers instead you need to adjust the metadata mapping accordingly.

Uživatel

namespace App\Model;


use Kdyby\Doctrine\Entities\BaseEntity;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class User extends BaseEntity {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    protected $id;

    /** @ORM\Column(type="string", length=150, nullable=false) */
    protected $name;

    /** @ORM\Column(type="string", length=150, nullable=false) */
    protected $email;

    /** @ORM\Column(type="string", length=150, nullable=false) */
    protected $password;

    /** @ORM\Column(type="string", length=150, nullable=false) */
    protected $role;

    /** @ORM\Column(type="string", length=150, nullable=false) */
    protected $work;


    public function setName($name) {
	$this->name = $name;
    }


    public function getName() {
	return $this->name;
    }

    public function setEmail($email) {
	$this->email = $email;
    }

    public function getEmail() {
	return $this->email;
    }

    public function setPassword($password) {
	$this->password = $password;
    }

    public function getPassword() {
	return $this->password;;
    }

    public function setRole($role) {
	$this->role = $role;
    }

    public function getRole() {
	return $this->role;
    }

    public function getWork() {
	return $this->work;
    }

Zkouška

	$user = new User();
	$user->setName("Pavel");
	$user->setEmail("nejaky.email@example.com");
	$user->setPassword("heslojeveslo");
	$user->getRole('admin');
	$this->entityManager->persist($user);
	$this->entityManager->flush();

Zkoušel jsem různá nastavení pro ID, nepomohlo

	/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
	/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
Filip Procházka
Moderator | 4668
+
0
-
  1. nepomůže použití traity Identifier ?
class User extends BaseEntity {

    use \Kdyby\Doctrine\Entities\Attributes\Identifier;

    /** @ORM\Column(type="string", length=150, nullable=false) */
    protected $name;
  1. zkus smazat ručně cache
mara11
Člen | 42
+
0
-

Jasný byly to cache, dík :-)