SilverStripe 3:使用带有$ has_many到DataObject的DataObject的ModelAdmin会出错

时间:2013-04-24 00:47:09

标签: silverstripe modeladmin

在SilverStripe 3中,我有两个相关的数据对象,OrderOrderItemOrder有很多OrderItemsOrderItem有一个Order

我正在使用ModelAdmin管理Order

我可以创建一个新的OrderItem但是当它尝试加载时我收到以下错误:

  

SELECT DISTINCT“OrderItem”。“ClassName”,“OrderItem”。“Created”,“OrderItem”。“LastEdited”,“OrderItem”。“ItemQuantity”,“OrderItem”。“ItemDiscount”,“OrderItem”。“ OrderID“,”OrderItem“。”ProductID“,”OrderItem“。”ID“,CASE WHEN”OrderItem“。”ClassName“IS NOT NULL那么”OrderItem“。”ClassName“ELSE'OrderItem'END AS”RecordClassName“,”产品”,‘标题’   来自“OrderItem”   WHERE(“OrderID”='9')AND(“OrderItem”。“ID”= 11)   按产品订购。标题ASC   限制1

     

'字段列表'中的未知列'Product.Title'

这是我的代码:

class Order extends DataObject { 
    public static $db = array(
        'OrderDate'=>'Date',
        'FulfilledDate'=>'Date',
        'OrderStatus'=>'Enum("New, InvoiceRequested, InvoiceSent, Paid, Cancelled")',
        'ShippingStatus'=>'Enum("Unshipped, Shipped")'
    );

    public static $has_one = array(
        'Customer' => 'Customer'
    );  

    public static $has_many = array(
        'OrderItems' => 'OrderItem'
    );
    // ...
}

class OrderItem extends DataObject { 

    public static $db = array(
        'ItemQuantity'=>'Int',
        'ItemDiscount'=>'Decimal'
    );

    public static $summary_fields = array( 
        'Product.Title',
        'ItemQuantity',
        'ItemDiscount'
    );

    public static $has_one = array(
        'Order' => 'Order',
        'Product' => 'Product'
    );
    // ...
}

有关如何在ModelAdmin中将联接添加到Product对象/表的任何想法?

修改

我发现了我遇到的问题。

public static $default_sort = array('Product.Title');

删除修复问题。

1 个答案:

答案 0 :(得分:2)

正好有一个没有答案的问题,@ MilesParker编辑了这个问题:

  

我发现了我遇到的问题。

public static $default_sort = array('Product.Title');
     

删除修复问题。

这一行应该在OrderItem类上,因为这是SQL错误显示的内容。该问题可能是由于缺少dev/build引起的,但也可能是由于该特定版本的Silverstripe 3.0中存在错误。