私は電子商取引アプリケーションを構築しており、ユーザーの注文を保存したいと考えています。Symfony2 Doctrine - データベース内のストレージアレイ
FYI:私は、だから私は私のOrderエンティティに配列フィールドorder
を持っsymfony 2.8
とDoctrine2
を使用しています。私のコントローラーでは、私が望むすべての情報(製品、ユーザー情報、金額、tva)を持つ配列を作成します。 しかし、私はSQLエラーを持っています、そして、なぜ私は知りません。しかし、私はsymfony2が私の配列をシリアライズすると思います。
エラー:
キャッチされないPHP例外教義\ DBAL \例外の\ SyntaxErrorException:(注文。INSERT INTO(検証、日付、参照、順序、user_idの)VALUES」を実行しながら、」例外が発生しましたか、? 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;}:7:\ "製品\"; a:3:{i:1; a :s:9:\ "参照\"; s:9:\ "PROD00001 \"; s:4:\ "名前\"; s:10:\ "MacBookPro \"; s:8:\ " d:1199.8;} i:2; a:5:{s:9:0}; i:1; s:7:\ "priceHT \"; d:999; s:8:\ "priceTTC \"; s:9:\ "PROD00002 \"; s:4:\ "名前\"; s:16:\ "ヘッドホンアップル\"; s:8:\ "数量\"; s:1 s:8:\ "priceTTC \"; d:76.989999999999995;} i:3; a:5:{s:9:\ "3 \"; s:7:\ "priceHT \"; d:69.989999999999995; "refe s:9:\ "PROD00003 \"; s:4:\ "名前\"; s:20:\ "T \ u00e9l \ u00e9visionサムスン\"; s:8:\ "数量\"; i s:8:\ "price \"; s:8:\ "priceTTC \"; d:599.99000000000001;}} s:8:\ "delivery \"; a:9:{s: s:4:\ "John \"; s:5:\ "電子メール\"; s:\ "姓\"; s: 12:\ "[email protected] \"; s:5:\ "電話\"; s:10:\ "6666666666 \"; s:6:\ "住所\"; s:14:\ "10 rue s:6:\ "ナント\"; s:7:\ "国\"; s:6 5:\ "44000 \";} s:6:\ "請求書\"; a:9:{s:9:\ "ファーストネームs:4:\ "John \"; s:5:\ "電子メール\"; s:12:\ "テスト: s:5:\ "電話\"; s:10:\ "6666666666 \"; s:6:\ "住所\"; s:14:\ "10 rue du test \"; s:6:\ "ナント\"; s:7:\ "国\"; s:6:\ "フランス\ s:10:\ "郵便番号\"; s:5:\ "44000 \"; s:8:\ "amountHT \"; d:1709; s:9:\ "amountTTC \"; d:2030 ; 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}'のC:\ WCOM \ www \ eCommerce \ vendor \ doctrine \ dbal \ lib \ Doctrine \ DBAL \ Driver \ AbstractMySQLDriver.php行90
これは私の注文エンティティ
/**
* 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