PHP Doctrine ORM и Symfony 4: недопустимый аргумент, предоставленный foreach() при сохранении данных

#php #database #symfony #orm #doctrine

#php #База данных #симфония #орм #доктрина

Вопрос:

Я делал учебник о Symfony (2018) на YouTube: https://www.youtube.com/watch?v=kfiKn5c9l84amp;ab_channel=TraversyMedia

когда я ввожу маршрут ../articles/save, он должен сохранить мои данные в таблице базы данных. В первый раз это сработало. Однако, когда я изменил данные на вторую статью и попытался сохранить, я получаю эту ошибку о foreach() (см. Изображение):

введите описание изображения здесь

Я не знаю причины этого или как отключить кеш .. (или ChachedReader)..

это мой код для сохранения статьи:

 <?php

    namespace AppController;

    use SymfonyComponentHttpFoundationResponse;
    use SymfonyComponentRoutingAnnotationRoute;
    use SensioBundleFrameworkExtraBundleConfigurationMethod;
    use SymfonyBundleFrameworkBundleControllerAbstractController;
    use AppEntityArticle;
    class ArticleController extends AbstractController {


        /**
         * @Route("/article", name="test_index")
         * @Method({"GET"})
         */
        public function index() {
            $articles = ["Article1", "Article2"];
            return $this->render('./articles/index.html.twig', array('articles' => $articles));
        }

        
    /**
     * @Route("/article/save")
     */
    public function save() {
            $entityManager = $this->getDoctrine()->getManager();

            $article = new Article();
            $article->setTitle("Article Two");
            $article->setBody("This is the body for article two");

            $entityManager->persist($article);

            $entityManager->flush();
            return new Response("Saved an article with the id of".$article->getId());
        }


    }
 

редактировать: это моя статья.:

 <?php

namespace AppEntity;

use AppRepositoryArticleRepository;
use DoctrineORMMapping as ORM;

/**
 * @ORMEntity(repositoryClass=ArticleRepository::class)
 */
class Article
{
    /**
     * @ORMId
     * @ORMGeneratedValue
     * @ORMColumn(type="integer")
     */
    private $id;


    /**
     * @ORMColumn(type="text", length=100)
     */
    private $title;

    /**
     * @ORMColumn(type="text")
     */
    private $body;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getTitle(): ?string
    {
        return $this->title;
    }
    public function setTitle($title): ?string
    {
        $this->title = $title;
        return $this->title;
    }

    public function getBody(): ?string
    {
        return $this->body;
    }

    public function setBody(string $body): self
    {
        $this->body = $body;

        return $this;
    }
}
 

Комментарии:

1. метаданные (orm), по-видимому, по какой-то причине недействительны, можете ли вы очистить кеш и повторить попытку?

2. И если он все еще не работает после очистки кэша, пожалуйста, поделитесь своей Article сущностью

3. очистка кэша не сработала, я добавил объект статьи выше