Symfony刚发生在我身上有些奇怪。我要添加与现有Article实体具有ManyToOne关系的Picture实体。向导给了我那些修改过的实体:
#App/Entity/Picture.php
/**
* @ORM\Entity(repositoryClass="App\Repository\PictureRepository")
*/
class Picture
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $adress;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\article", inversedBy="pictures")
*/
private $article;
和
#App/Entity/Article.php
/**
* @ORM\Entity(repositoryClass="App\Repository\ArticleRepository")
*/
class Article
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $Title;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $Text;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Category", mappedBy="Article")
*/
private $categories;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Picture", mappedBy="article")
*/
private $pictures;
这些对我来说似乎很好,但进行迁移时,不会在图片表中创建“ article_id”字段。这是生成的迁移代码:
$this->addSql('CREATE TABLE picture (id INT AUTO_INCREMENT NOT NULL, adress VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
很显然,没有存储任何关系,因此我无法在代码中使用此关系。
我想念什么吗?感谢您的帮助!
Alleluiah!找到了这个。
似乎我刚才打错了字,Symfony缓存甚至在纠正时也保留了它。
只需要:
php bin/console doctrine:cache:clear-result
php bin/console doctrine:cache:clear-query
php bin/console doctrine:cache:clear-metadata
然后进行新的迁移,一切顺利。