Доктрина - Как я могу установить значение по умолчанию для столбца в отношении?

Я прочитал документацию здесь, чтобы установить значения по умолчанию на @Column, но я пытаюсь сделать следующее:

/**
 * @ORM\Column(type = "smallint", options = {"default" : 0})
 * @ORM\ManyToOne(targetEntity = "OrderStatus")
 * @ORM\JoinColumn(name = "status", referencedColumnName = "id")
 */
private $status;

Кажется, что @Column перезаписывает отношения @ManyToOne, поскольку, когда я делаю миграцию, внешние ключи не создаются, но если я удалю @Column, они будут. Как я могу сохранить связь, но при этом указать значение по умолчанию?

Да, я видел это - ничего не имеет о значениях по умолчанию в отношениях

Element Zero 16.10.2018 19:34

Я недоумеваю, когда вижу законный, правильно сформулированный вопрос, подобный этому, с необъяснимым отрицательным голосом. Кому это помогает?

Darragh Enright 16.10.2018 20:11

Чтобы поразмыслить над вашим фактическим вопросом: можно ли определить значение по умолчанию для внешнего ключа, это похоже на то, что нужно исследовать на уровне самого ядра базы данных? Думаю, у меня возник бы вопрос: каково значение 0 - не могли бы вы использовать вместо него null? AFAIK отношение имеет значение NULL, как вы его там определяете.

Darragh Enright 16.10.2018 20:15

Полагаю, я мог бы установить значение null таким же, как 0 в таблице поиска, но, чтобы понять, как это работает, скажем, что он должен быть 0. И спасибо за помощь с отрицательным голосом - я никогда не понимаю их .

Element Zero 16.10.2018 20:21

Другими словами, если вам нужно отличить запись, не имеющую OrderStatus, от значения, то null должен подойти. В противном случае, если вам нужно установить OrderStatus по умолчанию, я бы подумал о том, чтобы установить это на уровне ORM - либо назначив OrderStatus по умолчанию при создании объекта в вашем конструкторе, либо вручную на более позднем этапе.

Darragh Enright 16.10.2018 20:22

OK. да, на данный момент я просто установил его на более позднем этапе, однако у меня есть опасения, что если кто-то когда-нибудь изменит этот код, это не принудительно на уровне базы данных. Мне кажется, что если Column может это сделать, почему бы и не иметь возможности JoinColumn.

Element Zero 16.10.2018 20:23

Ради понимания того, как это работает - я действительно не уверен, работает ли это на уровне ORM. Если вы пытались сделать это на уровне SQL, это кажется возможным, если значение по умолчанию относится к идентификатору, который существует в связанной таблице.

Darragh Enright 16.10.2018 20:24

Чтобы ответить на ваш последний комментарий - я предполагаю, что ограничение буквально таково - отношения внешнего ключа должны существовать при нормальных обстоятельствах (очевидно, это может зависеть от механизма db). Это отличается от обычного столбца, в котором нет никаких ассоциаций, которые следует учитывать.

Darragh Enright 16.10.2018 20:26

хорошо спасибо за помощь :)

Element Zero 16.10.2018 20:34

С удовольствием :) Я сам узнал кое-что интересное.

Darragh Enright 16.10.2018 21:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
10
783
0

Другие вопросы по теме