Доктрина, рационализация ManyToOne

При попытке обновить мою базу данных я получил ошибку:

SQLSTATE [23000]: нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено
(symfony,#sql-d8c_55, ОГРАНИЧЕНИЕ FK_957A6479A233CB39 ИНОСТРАННЫЙ КЛЮЧ
(klient_id) РЕКОМЕНДАЦИИ klient (id))

Мой классный пользователь:

namespace AppBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;/**
* Class User
* @package AppBundle\Entity
*
* @ORM\Table("fos_user")
* @ORM\Entity()
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Klient", inversedBy="users")
* @ORM\JoinColumn(nullable=false)
*/
private $klient;

/**
* @return mixed
*/
public function getKlient()
{
return $this->klient;
}

/**
* @param mixed $klient
*/
public function setKlient($klient)
{
$this->klient = $klient;
}

public function __construct()
{
parent::__construct();

}
}

Класс Клиент

namespace AppBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
* Klient
*
* @ORM\Table(name="klient")
* @ORM\Entity(repositoryClass="AppBundle\Repository\KlientRepository")
*/
class Klient
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="nazwa", type="string", length=255, unique=true)
*/
private $nazwa;/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\User", mappedBy="klient")
*/
private $users;

/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}

/**
* Set nazwa
*
* @param string $nazwa
*
* @return Klient
*/
public function setNazwa($nazwa)
{
$this->nazwa = $nazwa;

return $this;
}

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

public function __construct()
{
$this->users = new ArrayCollection();
}
}

0

Решение

По моему мнению, у вас есть эта ошибка, потому что у вас уже есть данные в вашей базе данных. Когда вы пытаетесь добавить внешний ключ в свою пользовательскую таблицу, kcient_id имеет значение null. И в вашем определении вы указываете nullable: false.

Я предлагаю вам продолжить в два раза.

  1. Измените свою аннотацию на nullable: true, обновите базу данных и свяжите ваш клиент с клиентом

  2. Повторно отредактируйте свою аннотацию, чтобы nullable: false, это должно быть хорошо

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]