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
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
- 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;
- zkus smazat ručně cache