2015-04-16 78 views
1

我正在SilverStripe中創建一個網絡商店,從零開始不使用商店模塊。我無法創建購物車。SilverStripe自定義購物車

如果我要建立一個沒有任何CMS系統的網絡商店,我會創建3個表格。 A User表,Product表和Order表。

Order表那裏將被存儲的順序的ID,一個UserID鏈接到用戶,ProductID鏈接到產品和Quantity

因爲我使用的是SilverStripe,所以我不能直接做到這一點。我可以創建類似這樣的表,但是因爲它不是創建和運行查詢的目的,而不是實現它的方式。

如何正確使用SilverStripe來做到這一點?

我知道SilverStripe的各種開源購物模塊,但我發現它們令人困惑,我不知道它們如何鏈接到對方。

回答

3

您可以讓SilverStripe通過擴展其DataObjectPage類來爲您創建數據庫表。

以下代碼適用於SilverStripe 3.1。

以下是如何創建UserProductOrder類,用所描述的關係創建所需的數據庫表。我還添加了OrderItem班,因爲我認爲這很有意義。

class User extends DataObject { 

    private static $db = array(
     'FirstName' => 'Text', 
     'LastName' => 'Text', 
     'Email' => 'Text' 
    ); 
} 

class Product extends DataObject { 

    private static $db = array(
     'Title' => 'Text', 
     'Price' => 'Decimal(19,8)' 
    ); 
} 

class Order extends DataObject { 

    private static $has_one = array(
     'User' => 'User' 
    ); 

    private static $has_many = array(
     'OrderItems' => 'OrderItem' 
    ); 
} 

class OrderItem extends DataObject { 

    private static $has_one = array(
     'Order' => 'Order', 
     'Product' => 'Product', 
     'Quantity' => 'Int' 
    ); 
} 

一旦你創建了這些類運行dev/build?flush=1再看看那些在你的數據庫中創建的表。

對於Product如果您希望產品以頁面形式顯示給用戶,則可以擴展Page而不是DataObject。這取決於你。

使用SilverStripe來管理您的類,關係和數據庫。這就是它的原因。

如果您想要SilverStripe中的優秀店鋪模塊,我建議您查看SwipeStripe。或者如果你確實想自己建立這個,你可以看看SwipeStripe's source code on git看看他們是如何做的。