您好,当我想创建新帖子时,Sonata bundle 出现问题,我收到消息



SQLSTATE[23000]:违反完整性约束:1048 列“已创建”
不能为空

在我的实体类中,我使用 @ORM\HasLifecycleCallbacks() 来创建和更新操作。

实体

use Doctrine\ORM\Mapping as ORM;

    /**
     * Post
     *
     * @ORM\HasLifecycleCallbacks()
     * @ORM\Table(name="post")
     * @ORM\Entity(repositoryClass="ISLab\Bundles\BlogBundle\Entity\PostRepository")
     */
    class Post
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;

        /**
         * @var string
         *
         * @ORM\Column(name="title", type="string", length=255)
         */
        private $title;

        /**
         * @var integer
         *
         * @ORM\Column(name="status", type="integer")
         */
        private $status;

        /**
         * @var string
         *
         * @ORM\Column(name="body", type="text", nullable=true)
         */
        private $body;

        /**
         * @var datetime
         *
         * @ORM\Column(name="created", type="datetime")
         */
        private $created;

        /**
         * @var datetime
         *
         * @ORM\Column(name="updated", type="datetime")
         */
        private $updated;

这是我在实体中用于创建和更新的方法。
/*
 * Set Date Created
 *
 * @ORM\PrePersist
 *
 * @return \DateTime
 */
public function setCreated()
{
    return $this->created = new \DateTime(date('Y-m-d H:i:s'));
}

/**
 * Get Date Created
 *
 * @return Post
 */
public function getCreated()
{
    return $this->created;
}

/**
 * Set Date Modified
 *
 * @ORM\PrePersist
 * @ORM\PreUpdate
 *
 * @return Post
 */
public function setUpdated()
{
    $this->updated = new \DateTime();

    return $this;
}

/**
 * Get Udated Date
 *
 * @return Post
 */
public function getUpdated()
{
    return $this->updated;
}

更新操作工作正常,当我编辑任何帖子时,他总是被自动调用。但是当我尝试创建新的帖子创建值时,为什么是 null idk?

最佳答案

根据报错信息,插入新实体时created属性为null。您 必须为 设置此属性的值。

您可以在实体类构造函数中设置它:

class Post
{
    public function __construct()
    {
        $this->created = new \DateTime();
    }
    ...

或者,您可以通过调用 setCreated() 在持久化实体之前设置它。

关于Symfony2 列不能为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23369925/

10-13 04:42