2016-07-22 77 views
-1

我想創建一個簡單而小巧的購物車。我有一個實體訂購用戶。 我想知道如何在用戶點擊提交購物車後根據購物車中的數據創建新訂單。如何根據購物車的數據創建訂單

我不是找代碼,但我想有一些想法如何做到這一點。

class Cart 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User") 
* @ORM\JoinColumn(nullable=false) 
*/ 
private $user; 

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

//....... 
} 

實體訂購

class Order 
{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User") 
* @ORM\JoinColumn(nullable=false) 
*/ 
private $user; 

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

//...... 

} 

回答

0

你可能需要在你的車&訂單實體使用的ArrayCollection。

事情是這樣的:

use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ORM\Mapping as ORM; 

class Cart{ 
... 

    protected $items = null; 

    // Constructor. 
    public function __construct(){ 
     $this->items = new ArrayCollection(); 
    } 

    // Add item. 
    public function addItem($item){ 
     $this->items[] = $item; 
    } 

也會顯示在您的順序添加的功能,添加/刪除的項目到您的訂單。我認爲這足以讓你開始。

編輯#基於從HOUS評論2

我想我現在你問HOUS看到。 當您「提交」車,則:

1) Create new Order. 
2) Iterate over Cart items. 
3) Remove items from Cart and Add to Order. 
4) Proceed to Checkout to confirm that Order is correct. 
5) Commit or revert changes. 

我覺得上面的大致標準的工作流程。

+0

我想知道如何在用戶點擊提交購物車後根據購物車中的數據創建新訂單。 – hous

+0

在你的文章中,你說過「我不是在尋找代碼,但我想知道如何做到這一點」,並且編輯#2確實回答了這個問題。你能證實住房嗎?除非你正在尋找別的東西...... –