Я сомневаюсь. У меня есть две таблицы InnoDB в MySQL, это их сущности:
class Account
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* one account is created by one user
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(name="createdby", referencedColumnName="id", onDelete="CASCADE")
*/
private $createdby;
.
.
.
А также
class User
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Many Users belong to One Account
*
* @ORM\ManyToOne(targetEntity="Account", inversedBy="users")
* @ORM\JoinColumn(name="account", referencedColumnName="id")
*/
private $account;
Таким образом, существует два разных отношения: одно — «учетная запись, созданная пользователем», а другое — «пользователь принадлежит учетной записи».
Когда я пытаюсь удалить учетную запись (например, УДАЛИТЬ ИЗ УЧЕТНОЙ ЗАПИСИ, ГДЕ id = 28), я хотел бы также удалить пользователя, который создал учетную запись. Я не говорю, чтобы удалить пользователя, который принадлежит к этой учетной записи, просто тот, кто его создал. Но это дает мне ошибку ограничения внешнего ключа:
Неустранимая ошибка: Uncaught PDOException: SQLSTATE [23000]: Нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (example
,user
, ОГРАНИЧЕНИЕ FK_8D93D6497D3656A4
ИНОСТРАННЫЙ КЛЮЧ (account
) РЕКОМЕНДАЦИИ account
(id
)) в …
Любой совет?
Благодарю.
Задача ещё не решена.
Других решений пока нет …