Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Doctrine和Symfony2调试失败的DB写入?_Php_Mysql_Symfony_Doctrine Orm - Fatal编程技术网

Php 如何使用Doctrine和Symfony2调试失败的DB写入?

Php 如何使用Doctrine和Symfony2调试失败的DB写入?,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,在控制器中,我在提交表单和isValid() 我已经检查了$form->getData()的内容,它看起来不错,但没有写入表中。日志中没有任何错误。我如何开始调试它?在我的实体类中,它是用于用户注册的,我有一个创建日期字段。为了填充这个字段,我 // this is the WRONG version class User{ //... /** * @ORM\Column(type="datetime") */ protected $created;

在控制器中,我在提交表单和
isValid()


我已经检查了
$form->getData()
的内容,它看起来不错,但没有写入表中。日志中没有任何错误。我如何开始调试它?

在我的实体类中,它是用于用户注册的,我有一个创建日期字段。为了填充这个字段,我

// this is the WRONG version
class User{

    //...
    /**
     * @ORM\Column(type="datetime")
     */
    protected $created;


    //...
    public function __construct()
    {
        $this->created = date("Y-m-d H:i:s");
    }


    public function setCreated(\DateTime() $created)
    {
        $this->created = $created;
    }

}
然而,我应该做的是:

/** 
 * ... other orm settings
 * @ORM\HasLifecycleCallbacks()
 */
class User{

    /**
     * @ORM\Column(type="datetime")
     */
    protected $created;

    //....

    /**
     * @ORM\prePersist
     */
    public function setCreatedValue()
    {
        $this->created = new \DateTime();
    }

}
我没有发现这一点的原因是日志文件中没有记录任何错误。我是以ajax调用的形式提交此表单的,在打开firebug(依赖于默认的chrome控制台)之前,我没有考虑在ajax调用的响应中查找错误


我不记得可以返回的确切错误,但它与DateTimeType有关。

您的代码示例太小,无法准确定位问题,但是我猜entitiy manager无法使用该实体。是否使用有效的实体来存储表单数据?-有关文档,请参阅。感谢您的评论。你说得对,这个片段太小了。我希望有一种方法可以看到Doctrine试图做什么,例如getSqlQuery()。实际上,我的问题是我需要使用生命周期回调来设置创建日期。当我使用AJAX时,问题变得更加复杂,在我开始使用firebug之前,我错过了错误响应。我假设同样的错误会出现在日志中。。。活到老学到老!你几乎可以做任何事情,例如SQL查询:-请在下面添加解决问题的答案。我认为更多的用户可以从信息中受益。需要在windows以外的任何平台上使用。
/** 
 * ... other orm settings
 * @ORM\HasLifecycleCallbacks()
 */
class User{

    /**
     * @ORM\Column(type="datetime")
     */
    protected $created;

    //....

    /**
     * @ORM\prePersist
     */
    public function setCreatedValue()
    {
        $this->created = new \DateTime();
    }

}