Внешние ключи/столбцы соединения и таблицы соединения не создаются Doctrine в Symfony 5+Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Внешние ключи/столбцы соединения и таблицы соединения не создаются Doctrine в Symfony 5+

Сообщение Anonymous »

В заголовке я упомянул как внешние ключи, так и таблицы соединений. В данном случае меня в первую очередь интересуют внешние ключи. Но в любом случае таблица соединения — это всего лишь несколько внешних ключей в таблице. Кажется, что в Symfony 5+ (т. е. выше 4) программа Doctrine не обрабатывает отношения так, как раньше?
Я упоминаю об этом разделении, потому что, насколько я помню (у меня нет давно не работал и на тот момент пользовался Symfony 4) в предыдущих версиях проблем не было. Приведенный ниже код относится к версии 5, но его может быть и 6, и результат будет тот же.
Итак, по сути, существует два объекта: Пользователь и Видео. Первый User.php:
#[ORM\Entity(repositoryClass: UserRepository::class)]
#[ORM\Table(name: '`user`')]
class User// implements EntityInterface
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private int $id;

#[ORM\Column(length: 255)]
private string $fingerprint;

#[OneToMany(targetEntity: "App\Entity\Video", mappedBy: "user")]
private ?ArrayCollection $videos = null;

...
}

и второй файл Video.php:
#[ORM\Entity(repositoryClass: VideoRepository::class)]
#[ORM\Table(name: '`video`')]
class Video// implements EntityInterface
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private int $id;

#[ORM\Column(length: 255, nullable: true)]
private ?string $filename = null;

#[ORM\Column(type: Types::DATETIME_MUTABLE)]
private \DateTimeInterface $date;

// #[ORM\Column(name: "id_user", type: "integer")]
#[ManyToOne(targetEntity: "App\Entity\User", inversedBy: "videos")]
#[JoinColumn(name: "id_user", referencedColumnName: "id")]
private User $user;

...
}

Теперь, если я не ошибаюсь, я полностью уважаю аннотации Doctrine для 5+ версий Symfony в соответствии с этим.
И я должен получить что-то подобное в документации, включая упоминание внешнего ключа. ALTER TABLE Feature ADD FOREIGN KEY (product_id) REFERENCES Product(id); (адаптировано под мои таблицы).
Но дело в том, что когда я запускаю: php bin/console Doctory:schema:update --dump-sql< /p>
Я не получаю часть внешнего ключа:
CREATE TABLE `user` (id INT AUTO_INCREMENT NOT NULL, fingerprint VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;
CREATE TABLE `video` (id INT AUTO_INCREMENT NOT NULL, filename VARCHAR(255) DEFAULT NULL, date DATETIME NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB;

Хуже всего то, что если я сам искусственно создам внешний ключ, то команда php bin/console Doctor:schema:update --dump-sql захочет удалить это.
Что мне здесь не хватает...? Заранее спасибо за вашу помощь. Тем временем, я думаю, я попробую заняться разработкой на Symfony 4.4, и аннотации, конечно, будут другими (стиль комментариев), чтобы это работало.
PS: это не id_user против user_id, я уже пробовал, ничего не изменилось.
Если я раскомментирую #[ORM\Column(name: "id_user", введите: "integer")] в User.php Я получу столбец, но без ограничения внешнего ключа... так что это не решение.
Вот весь мой класс User:


Подробнее здесь: https://stackoverflow.com/questions/786 ... in-symfony
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»