У меня есть сущность предмета, сущность акции и сущность цвета
У товара есть акции 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
Я застрял на пару дней, если у кого-то есть идея, поделитесь
спасибо @Vyctorya, он работал в случае null, но имел исключение в случае фактического объекта цвета, как показано ниже Catchable Fatal Error: объект класса Proxies__CG __ \ AppBundle \ Entity \ Color не может быть преобразован в строку <code> / ** * \ @return Color | null * / общедоступная функция getColor ():? Color {return $ this-> color; } </code>
Вам нужно добавить метод к сущности Color: публичная функция __toString () {return $ this-> NameOrSomethingElse; }
спасибо @Vyctorya, это решило мою проблему, но я не знаю, что делает __toString () Я не знаю об этом, не могли бы вы объяснить немного больше.
Если у вас есть форма или что-то, что отображает сущность Stock и связанную сущность Color, Symfony / PHP / HTML не знает, как распечатать сущность Color (распечатать идентификатор или другое значение поля или комбинацию нескольких полей). Вот почему вы получаете «не удалось преобразовать в строку». Если у объекта есть метод __toString, будет напечатано возвращаемое значение этого метода, и ошибка исчезнет.
Если ошибка возникает внутри формы и вы используете поле EntityType: используйте опцию 'choice_label' для настройки отображаемой строки. symfony.com/doc/current/reference/forms/types/entity.html




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