gpt4 book ai didi

mysql - 在 Doctrine 模式中,当我添加新字段时无法更新

转载 作者:行者123 更新时间:2023-11-29 13:00:42 25 4
gpt4 key购买 nike

我有两个表,一个是产品,另一个是类别。我首先创建了产品并通过终端生成了数据库架构。当我将以下字段添加到产品实体时:

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

然后我将产品字段添加到类别实体,如下所示:

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

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

当我在终端中键入以下命令时:

php console doctrine:schema:update --force

它表示无需更新 - 您的数据库已与当前实体元数据同步。

对于最后一步,我什至删除了产品和类别表并通过以下命令生成它们:

php console doctrine:schema:update --force

两个表都已创建,但无法添加category_id。

我遵循了 symfony 的官方书籍。这里有什么我错过的吗?

通过 shell 创建实体后,我手动添加了 Category_id 及其元数据

编辑::

产品实体:

<?php

namespace Acme\StoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Product
*/
class Product
{
/**
* @var integer
*/
private $id;

/**
* @var string
*/
private $name;

/**
* @var string
*/
private $price;

/**
* @var string
*/
private $description;

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

/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set name
*
* @param string $name
* @return Product
*/
public function setName($name)
{
$this->name = $name;

return $this;
}

/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}

/**
* Set price
*
* @param string $price
* @return Product
*/
public function setPrice($price)
{
$this->price = $price;

return $this;
}

/**
* Get price
*
* @return string
*/
public function getPrice()
{
return $this->price;
}

/**
* Set description
*
* @param string $description
* @return Product
*/
public function setDescription($description)
{
$this->description = $description;

return $this;
}

/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
}

类别实体:

<?php

namespace Acme\StoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
* Category
*/
class Category
{
/**
* @var integer
*/
private $id;

/**
* @var string
*/
private $name;


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

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

/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set name
*
* @param string $name
* @return Category
*/
public function setName($name)
{
$this->name = $name;

return $this;
}

/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
}

最佳答案

您的 yml 文件中缺少正确的映射,您的 yml 文件应包含如下内容:

Product:
type: entity
manyToOne:
category:
targetEntity: Category
inversedBy: products
joinColumn:
name: category_id
referencedColumnName: id

related documentation 中了解有关 yaml 映射的更多信息.

关于mysql - 在 Doctrine 模式中,当我添加新字段时无法更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com