#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. очистка кэша не сработала, я добавил объект статьи выше