Ошибка: не удалось определить тип доступа к свойству "статьиКатегории" в классе "Статьи"

Я использую Symfony 3.4.7. Я работаю с 3 связанными объектами: статьей, категорией и категориями статей. СтатьиКатегории - это таблица отношений.

Я хочу добавлять и редактировать статьи. Хотел бы я добавлять / редактировать статьи, учитывая, что статья может иметь несколько категорий и наоборот. У меня есть атрибуты, относящиеся к отношениям в таблице отношений, поэтому я создал объект отношения.

Это код статьи:

/**
 * Articles
 *
 * @ORM\Table(name = "articles")
 * @ORM\Entity(repositoryClass = "AppBundle\Repository\ArticlesRepository")
 */
class Articles
{
    /**
     * @var string
     *
     * @ORM\Column(name = "code_article", type = "string", length=10)
     * @ORM\Id
     */
    private $codeArticle;

    /**
     * @var string
     *
     * @ORM\Column(name = "description", type = "text", nullable=true)
     */
    private $description;

    /**
     * @var ArticlesCategories
     *
     * @ORM\OneToMany(targetEntity = "AppBundle\Entity\ArticlesCategories", mappedBy = "codeArticle")
     */
    private $articlesCategories;
    // getters et setters normaux
...
    /**
     * Add articlesCategorie
     *
     * @param ArticlesCategories $articleCategorie
     *
     * @return Articles
     */
    public function addArticlesCategorie(ArticlesCategories $articleCategorie){
        $this->articlesCategories[] = $articleCategorie;
        $articleCategorie->setCodeArticle($this);

        return $this;
    }

    /**
     * remove articlesCategorie
     *
     * @param ArticlesCategories $articlesCategorie
     */
    public function removeArticlesCategorie(ArticlesCategories $articlesCategorie){
        $this->articlesCategories->removeElement($articlesCategorie);
    }

    /**
     * Get articlesCategories
     *
     * @return Collection
     */
    public function getArticlesCategories(){
        return $this->articlesCategories;
    }

    public function __toString()
    {
        return $this->codeArticle;
    }

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

Это код отношения СтатьиКатегории:

/**
 * ArticlesCategories
 *
 * @ORM\Table(name = "articles_categories")
 * @ORM\Entity(repositoryClass = "AppBundle\Repository\ArticlesCategoriesRepository")
 */
class ArticlesCategories
{
    /**
     * @var int
     *
     * @ORM\Column(name = "id", type = "integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy = "AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\ManyToOne(targetEntity = "AppBundle\Entity\Articles", inversedBy = "articlesCategories")
     * @ORM\JoinColumn(referencedColumnName = "code_article", nullable=false)
     */
    private $codeArticle;

    /**
     * @var string
     *
     * @ORM\ManyToOne(targetEntity = "AppBundle\Entity\Categories")
     * @ORM\JoinColumn(referencedColumnName = "reference", nullable=false)
     */
    private $codeCategorie;

    /**
     * @var string
     *
     * @ORM\Column(name = "critere_rech_1", type = "string", length=45, nullable=true)
     */
    private $critereRech1;

    /**
     * @var string
     *
     * @ORM\Column(name = "critere_rech_2", type = "string", length=45, nullable=true)
     */
    private $critereRech2;

А в моем Entite Categories нет ничего конкретного.

Я автоматически генерирую грубую часть моих статей, затем редактирую класс ArticlesType, чтобы иметь все атрибуты отображаемых моих отношений ArticlesCategories. Для этого выпуска я использую CollectionType.

Это код моей формы ArticlesType:

class ArticlesType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('codeArticle')
            ->add('description')
            ->add('ecotaxe')
            ->add('qteMaxCde')
            ->add('publication')
            ->add('designation')
            ->add('taxonomie')
            ->add('referenceStock')
            ->add('articleRegroupement')
            ->add('articleAssocie1')
            ->add('articleAssocie2')
            ->add('articleAssocie3')
            ->add('seuilDegressif')
            ->add('tauxDegressif')
            ->add('articlesCategories', CollectionType::class, array(
                'entry_type' => ArticlesCategoriesType::class,
                'allow_add' => true,
                'allow_delete' => true,
                'prototype' => true,
                'by_reference' => false,
                'label' => 'test',
                'attr' => array('class' => 'collection-articlesCategories'),
                'auto_initialize' => true
            ));
    }

    public function getName(){
        return 'Articles';
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Articles'
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'appbundle_articles';
    }


}

Когда я перехожу на страницу редакции статьи, созданную Symfony, я получаю правильное отображение. Страница выпуска Но когда я нажимаю кнопку «Изменить», я получаю следующую ошибку: не удалось определить тип доступа для свойства «articleCategories» в классе «AppBundle \ Entity \ Articles».

Не понимаю, в чем моя ошибка.

Надеюсь, я понял.

Спасибо за помощь.

Стоит ли изучать 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 нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
3
0
1 447
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте поставить следующее:

public function setArticlesCategories(...) {
 ...
} 

Да, как вы можете видеть в моем коде, я уже пишу это в своей сущности. И у меня всегда ошибка. Спасибо за ваш ответ!

Lucie 10.04.2018 15:55

извините, я не видел ... странно, что он внизу, вы должны поместить его в верхнюю часть вашего кода. ИМХО

iamjc015 11.04.2018 07:16

вы пробовали ставить setArticlesCategories (...)?

iamjc015 11.04.2018 07:18

Порядок конструктора ничего не меняет. Но добавьте setArticlesCategories (...) к моей работе с объектами! Так что эту тему решаем! Большое спасибо !

Lucie 11.04.2018 08:51

Привет, @Lucie, я отредактировал свой ответ, можете ли вы отметить это как ответ? Спасибо!

iamjc015 25.07.2018 11:55

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