2015-04-16 81 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看看他们是如何做的。