2016-04-23 30 views
3

我正在構建一個電子商務應用程序,並且我想存儲用戶的訂單。Symfony2 Doctrine - 數據庫中的存儲陣列

FYI:我使用symfony 2.8Doctrine2

所以我在我的訂單實體陣列場order。在我的控制器中,我構建了一個包含我想要的所有信息(產品,用戶信息,金額,tva)的陣列。 但我得到了一個SQL錯誤,我不知道爲什麼。但我認爲這是當symfony2序列化我的數組。

的錯誤:

未捕獲的PHP異常學說\ DBAL \異常\ SyntaxErrorException:?「當執行「INSERT INTO訂單(驗證,日期,參考,命令,USER_ID)VALUES(,發生異常? ',',?,?)'with params [0,「2016-04-23 13:07:55」,0,「a:7:{s:3:\」tva \「; a:2:{s :3:\ 「20%\」; d:299.80000000000001; S:3:\ 「10%\」; d:21;} S:\ 「產品\」;一個:7 3:{I:1;一個:5:{S:9:\ 「參考\」; S:9:\ 「PROD00001 \」; S:4:\ 「名\」; S:10:\ 「的MacBookPro \」; S:8:\」量\ 「; I:1; S:7:\」 priceHT \ 「; d:999; S:8:\」 priceTTC \「; d:1198.8;} I:2; A:5:{S:9: \「參考\」; s:9:\「PROD00002 \」; s:4:\「name \」; s:16:\「Headphones Apple \」; s:8:\「quantity \」; s:1 :\ 「3 \」; S:7:\ 「priceHT \」; d:69.989999999999995; S:8:\ 「priceTTC \」; d:76.989999999999995;} I:3;:5:{S:9:\ 「refe 「s:9:\」PROD00003 \「; s:4:\」name \「; s:20:\」T \ u00e9l \ Samsung \「; s:8:\」quantity \「; i :1; S:7:\ 「priceHT \」; d:499.99000000000001; S:8:\ 「priceTTC \」; d:599.99000000000001;}} S:8:\ 「交貨\」;一個:9:{S: 9:\ 「名字\」; S:3:\ 「Doe的\」; S:8:\ 「姓氏\」; S:4:\ 「約翰\」; S:5:\ 「電子郵件\」; S: 12:\「[email protected] \」; s:5:\「phone \」; s:10:\「6666666666 \」; s:6:\「adress \」; s:14:\「10 rue du test「:s:10:\」complement \「; n; s:4:\」city \「s:6:\」Nantes \「:7:\」country \「s:6 :\ 「法國\」; S:10:\ 「郵編\」; S:5:\ 「44000 \」;} S:6:\ 「INVOIC \」;一個:9:{S:9:\「姓\ 「; S:3:\」 Doe的\ 「; S:8:\」 姓氏\ 「; S:4:\」 約翰\ 「; S:5:\」 電子郵件\ 「; S:12:\」 測試@ test.fr \「s:5:\」phone \「; s:10:\」6666666666 \「; s:6:\」adress \「; s:14:\」10 rue du test \「; S:10:\ 「補體\」; N; S:4:\ 「城市\」; S:6:\ 「南特\」; S:7:\ 「國家\」; S:6:\「法國\ 「; S:10:\」 郵編\ 「; S:5:\」 44000 \ 「;} S:8:\」 amountHT \ 「; d:1709; S:9:\」 amountTTC \「; d:2030 ; s:5:\「token \」; s:40:\「2627ca31ef4d9d6ab3bf69dd38f02cbb8468bf7f \」;}「,2]:SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'order,user_id'附近使用正確的語法)VALUES(0,'2016-04-23 13:07:55',0,'a:7:{s:3 :\「tva \」; a:2:{s:3:'at line 1'at C:\ wamp \ www \ eCommerce \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ AbstractMySQLDriver.php line 90

這是我Order實體

/** 
    * Orders 
    * 
    * @ORM\Table(name="orders") 
    * @ORM\Entity(repositoryClass="Ecommerce\EcommerceBundle\Repository\OrdersRepository") 
*/ 
class Orders 
{ 
/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @var bool 
* 
* @ORM\Column(name="validate", type="boolean") 
*/ 
private $validate; 

/** 
* @var \DateTime 
* 
* @ORM\Column(name="date", type="datetimetz") 
*/ 
private $date; 

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

/** 
* @ORM\ManyToOne(targetEntity="Users\UsersBundle\Entity\Users", inversedBy="orders") 
* @ORM\JoinColumn(nullable=true) 
*/ 
private $user ; 

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


/** 
* Get id 
* 
* @return integer 
*/ 
public function getId() 
{ 
    return $this->id; 
} 

/** 
* Set validate 
* 
* @param boolean $validate 
* @return Orders 
*/ 
public function setValidate($validate) 
{ 
    $this->validate = $validate; 

    return $this; 
} 

/** 
* Get validate 
* 
* @return boolean 
*/ 
public function getValidate() 
{ 
    return $this->validate; 
} 

/** 
* Set date 
* 
* @param \DateTime $date 
* @return Orders 
*/ 
public function setDate($date) 
{ 
    $this->date = $date; 

    return $this; 
} 

/** 
* Get date 
* 
* @return \DateTime 
*/ 
public function getDate() 
{ 
    return $this->date; 
} 

/** 
* Set reference 
* 
* @param integer $reference 
* @return Orders 
*/ 
public function setReference($reference) 
{ 
    $this->reference = $reference; 

    return $this; 
} 

/** 
* Get reference 
* 
* @return integer 
*/ 
public function getReference() 
{ 
    return $this->reference; 
} 

/** 
* Set user 
* 
* @param \Users\UsersBundle\Entity\Users $user 
* @return Orders 
*/ 
public function setUser(\Users\UsersBundle\Entity\Users $user = null) 
{ 
    $this->user = $user; 

    return $this; 
} 

/** 
* Get user 
* 
* @return \Users\UsersBundle\Entity\Users 
*/ 
public function getUser() 
{ 
    return $this->user; 
} 
/** 
* Constructor 
*/ 
public function __construct() 
{ 
    $this->products = new \Doctrine\Common\Collections\ArrayCollection(); 
} 

/** 
* Add products 
* 
* @param \Ecommerce\EcommerceBundle\Entity\Products $products 
* @return Orders 
*/ 
public function addProduct(\Ecommerce\EcommerceBundle\Entity\Products $products) 
{ 
    $this->products[] = $products; 

    return $this; 
} 


/** 
* Set order 
* 
* @param array $order 
* @return Orders 
*/ 
public function setOrder($order) 
{ 
    $this->order = $order; 

    return $this; 
} 

/** 
* Get order 
* 
* @return array 
*/ 
public function getOrder() 
{ 
    return $this->order; 
} 
} 

我的控制器

public function orderAction(Request $request){ 

    $session = $request->getSession() ; 
    $em = $this->getDoctrine()->getManager() ; 
    $generator = $this->container->get('security.secure_random'); 
    if(!$session->has('order')){ 
     $order = new Orders(); 
    } else { 
     $order = $em->getRepository('EcommerceBundle:Orders')->find($session->get('order')) ; 
    } 
    $order->setDate(new \DateTime()); 
    $order->setUser($this->container->get('security.context')->getToken()->getUser()); 
    $order->setValidate(0); 
    $order->setReference(bin2hex($generator->nextBytes(20))); 
    $order->setOrder($this->order($request)); 
    if(!$session->has('order')){ 
     $em->persist($order); 
     $session->set('order',$order) ; 
    } 
    $em->flush() ; 

    return new Response($order->getId()); 
} 

我現在真的被卡住了

如果您需要更多信息或代碼,請告訴我。

謝謝。

回答