如何在 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);
}

祝你好运;)