调用 delete() 导致服务器错误

Calling delete() causes server error

为什么我的 delete() 导致 Silverstripe 中的服务器错误?下面是代码:

$product = Product::create();
$product = Product::get()->filter(array('Price' => 26.32));
$product->delete();     

以上是在requireDefaultRecords()和运行时/dev/build?flush

Product::get()->filter(array('Price' => 26.32)) 将 return 成为 DataList,而不是 Product 对象。这是因为 Product::get()->filter() 可以找到不止一种产品。即使 filter 函数只找到一个项目,这仍然 return 一个 DataList

您需要做的是遍历 DataList 中的每一项并删除每一项。

$newProduct = Product::create();
$products = Product::get()->filter(array('Price' => 26.32));

foreach ($products as $product) {
    $product->delete(); 
}