如何在 Symfony 中将 Not null 的字段修改为 null?
How to modify a field that is Not null to null in Symfony?
我有一个字段 commande_id
在 table 中不为空,我想将其更改为空。在迁移中直接更改它是否安全,或者我该怎么做?
$this->addSql('CREATE TABLE product (id INT AUTO_INCREMENT NOT NULL, commande_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(255) NOT NULL, price DOUBLE PRECISION NOT NULL, description VARCHAR(255) NOT NULL, image_url VARCHAR(255) NOT NULL, INDEX IDX_D34A04AD82EA2E54 (commande_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
您必须将 nullable=true 添加到您的实体字段中,请参见示例:
class Entity
{
/**
* @ORM\Column(name="bot_location", type="point", nullable=true)
*/
private ?Point $location = null;
}
之后你必须执行下一个命令:
bin/console doctrine:migrations:diff
它将使用 SQL
生成新的迁移
在您的项目目录中转到 src/Entity/*Yourtablename*
并找到此代码
/**
* @ORM\Column(type="integer")
*/
private $commande_id;
并将nullable=true
添加到此代码
您的实体代码:
/**
* @ORM\Column(type="integer", nullable=true)
*/
在此之后,手动更改数据库列设置,
我通过 phpmyadmin 做到这一点。
在您的控制器中,当您想要保存新行并且 commande_id 为空时
只需这样做:
use App\Entity\Yourtablename;
$yourtablename = new Yourtablename();
if ($commande_id){
$yourtablename->setCommandeId($commande_id);
}
祝你好运;)
我有一个字段 commande_id
在 table 中不为空,我想将其更改为空。在迁移中直接更改它是否安全,或者我该怎么做?
$this->addSql('CREATE TABLE product (id INT AUTO_INCREMENT NOT NULL, commande_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(255) NOT NULL, price DOUBLE PRECISION NOT NULL, description VARCHAR(255) NOT NULL, image_url VARCHAR(255) NOT NULL, INDEX IDX_D34A04AD82EA2E54 (commande_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
您必须将 nullable=true 添加到您的实体字段中,请参见示例:
class Entity
{
/**
* @ORM\Column(name="bot_location", type="point", nullable=true)
*/
private ?Point $location = null;
}
之后你必须执行下一个命令:
bin/console doctrine:migrations:diff
它将使用 SQL
生成新的迁移在您的项目目录中转到 src/Entity/*Yourtablename*
并找到此代码
/**
* @ORM\Column(type="integer")
*/
private $commande_id;
并将nullable=true
添加到此代码
您的实体代码:
/**
* @ORM\Column(type="integer", nullable=true)
*/
在此之后,手动更改数据库列设置, 我通过 phpmyadmin 做到这一点。
在您的控制器中,当您想要保存新行并且 commande_id 为空时 只需这样做:
use App\Entity\Yourtablename;
$yourtablename = new Yourtablename();
if ($commande_id){
$yourtablename->setCommandeId($commande_id);
}
祝你好运;)