2013-03-09 57 views
1

我有一個表名博客下面是它的結構。symfony2 + doctrine在學說中插入值

FieldName  Type 
Id    int(5) 
blog_title  string(255) 
blog_url  string(255) 
blog_desc  text 
image   string(255) 
tags   string(255) 
blog_created_at Date 
blog_status  string(1) 

我在控制器中爲此表創建了一個表單。

public function addAction() 
{ 
    $entity = new Blog(); 

    $form = $this->createFormBuilder() 
     ->add('blog_title') 
     ->add('blog_desc' ,'textarea') 
     ->add('blog_url') 
     ->add('image') 
     ->add('tags') 
     ->add('blog_status') 
     ->getForm(); 

    $request = $this->getRequest(); 
    if ($request->getMethod() == 'POST') 
    { 
     $form->bindRequest($request); 
     if ($form->isValid()) 
     { 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($entity); 
      $em->flush(); 
      return $this->redirect($this->generateUrl('admin_index')); 
     } 
     } 
    return $this->render('AdminBlogBundle:default:add.html.twig',array(
     'form' => $form->createView(), 
    )); 

} 

我想進入這個形式到我的數據庫的價值,但它給了我

An exception occurred while executing 'INSERT INTO Blog (blog_title, blog_desc, 
    blog_url, image, tags, blog_created_at, blog_status) VALUES (?, ?, ?, ?, ?, ?, ?)' 
    with params {"1":null,"2":null,"3":null,"4":null,"5":null,"6":null,"7":null}: 

所有這些我是從形式張貼值的誤差請求對象數組中我得到這即時通訊調用print_r($ request);但綁定它給我這個錯誤。所以請幫助我。

回答

0

你必須對模型對象傳遞給製造商這樣的:

$form = $this->createFormBuilder() 
    // ... 
    ->setData($entity) 
    ->getForm(); 

或者這樣:

$form = $this->createFormBuilder('form', $entity) 
    // ... 
    ->getForm(); 
+0

我的問題是,當我提交表單時,它需要所有的字段同時插入到MySQL表中。而我只有6個字段,因爲blog_created_date總是自動插入。目前我不想插入所有7字段到數據庫我只想插入六個字段到數據庫。而不知道如何處理symfony和doctrine – 2013-03-09 11:36:07

+0

那麼,從你提供的錯誤,沒有什麼是數據庫。所以,我的答案解決了這個問題。 – 2013-03-09 11:50:34

+0

要解決日期字段問題,請在您的實體中將'$ createdAt'設置爲'new \ DateTime'的構造函數。那麼您不必在表單中提供日期。但是Doctrine會將它傳遞給數據庫 - 即使它只是'null'。 – 2013-03-09 11:51:50

0


像這樣: - 用戶名: 類型:字符串 長度:255 固定:假 可空:假