Проблемы с отношениями EasyAdmin и Symfony One-to-Many

каждый.

У меня были проблемы с Easy Admin и связью «один ко многим», которую обрабатывал Symfony. В настоящее время у меня есть три объекта: «Пользователь», «Продукты» и «Категория».

Когда я размещаю связь между продуктом и категорией, я получаю эту ошибку при попытке добавить новую категорию в раздел администрирования Easy Bundle:

Catchable Fatal Error: Object of class AppBundle\Entity\Product could not be converted to string

Вот как выглядят мои партнеры в классах Product и Category, они в основном скопированы прямо из документации Symfony.

Категория продукта

/**
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
 * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
 */
private $category;

А вот ассоциация в конце категории:

...
use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\OneToMany(targetEntity="Product", mappedBy="category")
 */
private $products;

public function __construct()
{
    $this->products = new ArrayCollection();
}

Основные проблемы, которые, как мне кажется, возникают, заключаются в том, что в таблице продуктов нет поля для категории, и это приводит Easy Bundle в замешательство, поскольку, похоже, он полагается на свойства класса.

Если кто-то может предложить, как это исправить, было бы здорово. Или, если вы знаете о пакете администратора масла для работы, с которым могут возникнуть эти проблемы, это тоже было бы здорово.

Кроме того, если у вас есть опыт работы с Easy Admin Bundle, вы предлагаете просто разработчику сделать свой собственный. Потому что я вижу другую проблему с этим пакетом, например, возможность перечислить имена категорий в новой форме «Продукты», поскольку Symfony, похоже, регистрирует только category_id, а не имя. Я бы не смог перечислить категории по имени, только идентификационные номера. И я хотел бы перечислить названия различных категорий.

Любые предложения или помощь в этом были бы замечательными.


person Kaley36    schedule 12.05.2017    source источник


Ответы (1)


Я только что получил эту ошибку. Просто добавьте __toString() магический метод для вашего объекта Product:

class Product {
    ...

    public function __toString()
    {
        return $this->title; // <-- add here a real property which
    }                        //     describes your product
person yolenoyer    schedule 14.05.2017