php - 保存实体形式错误 - symfony2

标签 php forms symfony

<分区>

当我尝试保存简单表单时出现错误

错误 执行 'INSERT INTO mEvents (title, desc, dateTimeStart, dateTimeEnd, visibleFrom, visibleTo, timetype, locationName, miejsce) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' 时发生异常参数 ["sdfsdf", "sd", "2014-01-05 11:11:31", "2014-01-05 11:11:31", "2014-01-05 00:00:00", "2014-01-05 00:00:00", "435", "dfgfg", null]:

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“desc、dateTimeStart、dateTimeEnd、visibleFrom、visibleTo、timetype、locationName”附近使用的正确语法 500 内部服务器错误 - DBALException 1 个链接异常:

实体:

/**
 * CalendarEvent
 * @ORM\Entity
 * @ORM\Table(name="mEvents", indexes={
@ORM\Index(name="id", columns={"id"})
,@ORM\Index(name="time", columns={"dateTimeStart","dateTimeEnd"})
})
 */
class Event {

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    protected $title;

    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    protected $desc;

    /**
     * event start time
     * @var int
     * @ORM\Column(type="datetime")
     */
    protected $dateTimeStart;

    /**
     * event end time
     * @var int
     * @ORM\Column(type="datetime")
     */
    protected $dateTimeEnd;

    /**
     * @var int
     * @ORM\Column(type="datetime")
     */
    protected $visibleFrom;


    /**
     * @var int
     * @ORM\Column(type="datetime")
     */
    protected $visibleTo;


    /**
     * 1 jednodniowe, 2wielodniowe, 3 cykliczne, 4 zakresowe
     * @var int
     * @ORM\Column(type="smallint", length=2, nullable=true)
     */
    protected $timetype;

    /**
     * Nazwa miejsca
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    protected $locationName;

    /**
     * miejsce
     * @ORM\Column(type="integer", nullable=true)
     * @ORM\ManyToOne(targetEntity="Miejsce",inversedBy="events")
     * @ORM\JoinColumn(referencedColumnName="id")
     */
    protected $miejsce;

表格:

 /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {


        $builder
            ->add('title', 'text')
            ->add('desc', 'text')
            ->add('dateTimeStart', 'datetime',array(
                'format' => \IntlDateFormatter::SHORT,
                'input' => 'datetime',
                'widget' => 'single_text',
                'data' => new \DateTime("now")))
            ->add('dateTimeEnd', 'datetime',array(
                'format' => \IntlDateFormatter::SHORT,
                'input' => 'datetime',
                'widget' => 'single_text',
                'data' => new \DateTime("now")))
            ->add('visibleFrom', 'date',array(
                'input' => 'datetime',
                'data' => new \DateTime("now")))
            ->add('visibleTo', 'date',array(
            'input' => 'datetime',
            'data' => new \DateTime("now")))
            ->add('timetype', 'text')
            ->add('locationName', 'text')
            //->add('textadres', 'places_autocomplete')

            //->add('mkeywordsId', 'text')

            ->add('save', 'submit')
        ;
    }

Controller 编辑 Action

/**
 * @Template
 * @param string $id
 * @return Response
 */
public function EditAddAction($id='')
{




    /**
     * @var $hotel Mmiejsce
     */
    if($id)
        $entity = $this->getDoctrine()
            ->getRepository('MiejsceCalendarBundle:Event')
            ->find($id);
    else
        $entity = new Event();



    $form = $this->createForm(new EventType(), $entity);

    $request = $this->getRequest();

    $form->handleRequest($request);

    if ($form->isValid()) {

        $em = $this->getDoctrine()->getManager();
        $em->persist($entity);
        $em->flush();

    }

    return ['form'=>$form->createView()];

}

最佳答案

desc 是 MySQL 中的保留关键字。然后您应该重命名此属性。

编辑,

即使 Doctrine 允许您通过转义关键字来使用关键字。我建议您重命名您的属性(property)(最佳做法)以避免任何混淆。

关于php - 保存实体形式错误 - symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20932362/

相关文章:

PHP MYSQL事务返回错误SQLSTATE[HY000] : General error

php - 使用 PHP 和 MySQL 填充 Flex 4.5 DataGrid

javascript - form.submit() 在 firefox 中不工作

python - 具有浮点形式输入的django整数模型字段

c# - 在一个数据库中合并 MVC4 和 Symfony2 用户

c# - 如何在 Javascript 中读取页面历史记录?

PHP - 数组Where 子句错误中的未知列

php - 在 html 表单中键入输入字符需要匹配 - jQuery?

javascript - 交响乐 : using asset images with javascript?

symfony - ORM UniqueConstraint,空值重复