我正在構建一個電子商務應用程序,並且我想存儲用戶的訂單。Symfony2 Doctrine - 數據庫中的存儲陣列
FYI:我使用symfony 2.8
和Doctrine2
所以我在我的訂單實體陣列場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());
}
我現在真的被卡住了
如果您需要更多信息或代碼,請告訴我。
謝謝。
哦,我的壞,這是一個愚蠢的錯誤。現在工作正常,謝謝! – Letsrocks