@galliard

Как в доктрине генерировать одинаковый id для 2х сущностей?

Предположим, есть сущность User с полем id и сущность Profile с полем id. Связь 1 к 1, профиль без юзера существовать не может, а вот юзер без профиля - может. Id профиля связан внешним ключем с id юзера.

Связать по id я их хочу, чтобы не городить не нужных полей только для связи. Но столкнулся с проблемой генерации одинаковых id для этих сущностей. Как это можно осуществить?

При попытке сделать это секвенсами я натыкаюсь на ограничение первичного ключа, когда при создании профиля id сгенерился, а юзера ещё не существует, но ограничения первичного ключа уже в силе.

Ключ хотелось бы иметь числовой и последовательно увеличивающийся, UUID или не подойдет.
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
VlastV
@VlastV
Ведущий разработчик – практик
Можно указать, что связь является первичным ключом.

/**
 * @ORM\Entity
 */
class User 
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    private $id;
}

/**
 * @ORM\Entity
 */
class Profile
{
    /**
     * @ORM\Id()
     * @ORM\OneToOne(targetEntity="User")
     */
    private $user;
}


В данном случае, Doctrine создаст две таблицы user и profile, где каждая таблица содержит только одно поле. Для таблицы profile поле user_id является внешним и первичным ключами одновременно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы