我有錯誤,當我嘗試保存簡單的形式,而在執行「INSERT INTO mEvents(保存實體形式的錯誤 - Symfony2的
錯誤 出現異常的標題,說明,dateTimeStart,dateTimeEnd,visibleFrom,visibleTo,timetype,LOCATIONNAME, miejsce)用參數[「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服務器版本在線路附近使用「遞減,dateTimeStart,dateTimeEnd,visibleFrom,visibleTo,timetype,LOCATIONNAME」正確的語法手冊1 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')
;
}
控制器編輯操作
/**
* @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()];
}
不應該這樣做自動嗎? **編輯**:研究了一下,找到了我在答案中提到的內容。 –
我認爲最好是正確地重新命名,以避免任何混淆,但教條允許您使用關鍵字(通過轉義它們)。 –
@MarkusKottländer好吧,我只是看着你的答案。 +1「最佳實踐」建議。 –