Я получаю эту ошибку при попытке создать новую сущность с именем «Nuclei». Это класс сущности:
/**
* Nuclei
*
* @ORM\Table(name="datinuclei")
* @ORM\Entity(repositoryClass="App\Repository\NucleiRepository")
*/
class Nuclei
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="datinuclei_id_seq", allocationSize=1, initialValue=1)
*/
private $id;
/**
* @var NucleiStatistiche
*
* @ORM\OneToOne(targetEntity="NucleiStatistiche")
* @ORM\JoinColumn(name="id", referencedColumnName="id")
*/
private $statistiche;
Изменить: NucleiStatistiche является материализованным представлением (не может вставлять строки) определено в сущности NucleiStatistiche
class NucleiStatistiche
{
/**
* @var int
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="NONE")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="totale_conferimenti", type="integer", nullable=false)
*/
private $totale_conferimenti;
PostgreSQL определение схемы таблицы
CREATE TABLE public.datinuclei
(
id integer NOT NULL DEFAULT nextval('datinuclei_id_seq'::regclass),
idcomune integer NOT NULL,
cognome character varying COLLATE pg_catalog."default",
nome character varying COLLATE pg_catalog."default",
CONSTRAINT datinuclei_pkey PRIMARY KEY (id),
CONSTRAINT datinuclei_codicenucleo UNIQUE (codicenucleo)
)
ошибка выброса
An exception occurred while executing 'INSERT INTO datinuclei (id, tiponucleo, codicenucleo, nome, cognome, codicefiscale, ncomponenti, indirizzoutenza, civico, mail, telefono, cellulare, proprietario, foglio, particella, sub, categoria, idcomune) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [null, 1, "abcdefgi123", "wefqwe", "fqweff", "qwefqew", 23, "awefq", "2", "qweff@\u00e6we.it", "1234123", "1234123", null, "63", "3", null, null, 3]:
SQLSTATE[23502]: Not null violation: 7 ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, 3, fqweff, wefqwe, 23, 1234123, 1234123, qweff@æwe.it, qwefqew, abcdefgi123, 1, f, f, null, awefq, 2, 0, null, 63, 3, null, null).
контроллер, на котором я сохраняю данные
if ($form->isSubmitted()) {
if ($form->isValid()) {
$nucleo = $form->getData();
$nucleo->setCodiceNucleo('abcdefgi123');
dump($nucleo);
$em->persist($nucleo);
$em->flush();
$this->addFlash('success', 'Nucleo modificato correttamente');
//return $this->redirectToRoute('admin_article_list');
}else {
$this->addFlash('danger', 'Dati non validi');
}
}
Я пытаюсь использовать @ORM\GeneratedValue(strategy="SEQUENCE")
и IDENTITY
в столбце ID
, но такая же ошибка сохраняется, кто-нибудь?
Изменить: После некоторых тестов я понял проблема связана с Nucleistatistiche OneToOne отношения, но я не знаю, как решить