Symfony elastica bundle Исключение, когда свойство отношения сущности содержит нуль

У меня есть сущность предмета, сущность акции и сущность цвета

У товара есть акции oneToMany, а акции ManytoOne ассоциируются с цветом

теперь я сопоставляю сущность предмета и запасы с помощью эластичного поиска. Я отображаю акции как вложенные в товар

но он выдает ошибку, когда color_id имеет значение null в таблице запасов, как я могу решить это исключение

элемент: сопоставления: id: {type: integer} title: {индекс: проанализировано, анализатор: автозаполнение, search_analyzer: автозаполнение} описание: {индекс: проанализировано, анализатор: простой} снабжать: тип: вложенный include_in_root: правда характеристики: id: {type: integer} цвет: {тип: объект}

Ошибка типа: возвращаемое значение AppBundle \ Entity \ Stock :: getColor () должно быть экземпляром AppBundle \ Entity \ Color, возвращается значение null

Я застрял на пару дней, если у кого-то есть идея, поделитесь

Можете ли вы показать код объекта Stock? Похоже, функция getColor имеет возвращаемый тип. Я бы предположил, что это что-то вроде общедоступной функции getColor (): Color. Если я правильно понял, вам нужно добавить вопросительный знак перед Color, чтобы разрешить null в качестве возвращаемого значения: public function getColor ():? Color

Vyctorya 12.10.2018 14:50

спасибо @Vyctorya, он работал в случае null, но имел исключение в случае фактического объекта цвета, как показано ниже Catchable Fatal Error: объект класса Proxies__CG __ \ AppBundle \ Entity \ Color не может быть преобразован в строку <code> / ** * \ @return Color | null * / общедоступная функция getColor ():? Color {return $ this-> color; } </code>

Pankaj 12.10.2018 15:42

Вам нужно добавить метод к сущности Color: публичная функция __toString () {return $ this-> NameOrSomethingElse; }

Vyctorya 12.10.2018 16:18

спасибо @Vyctorya, это решило мою проблему, но я не знаю, что делает __toString () Я не знаю об этом, не могли бы вы объяснить немного больше.

Pankaj 16.10.2018 11:17

Если у вас есть форма или что-то, что отображает сущность Stock и связанную сущность Color, Symfony / PHP / HTML не знает, как распечатать сущность Color (распечатать идентификатор или другое значение поля или комбинацию нескольких полей). Вот почему вы получаете «не удалось преобразовать в строку». Если у объекта есть метод __toString, будет напечатано возвращаемое значение этого метода, и ошибка исчезнет.

Vyctorya 16.10.2018 11:56

Если ошибка возникает внутри формы и вы используете поле EntityType: используйте опцию 'choice_label' для настройки отображаемой строки. symfony.com/doc/current/reference/forms/types/entity.html

Vyctorya 16.10.2018 11:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
6
122
0

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