Почему моя ошибка 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))
вернет DataList
, а не объект Product
. Это связано с тем, что Product::get()->filter()
может найти более одного продукта. Это все равно вернет DataList
даже если функция filter
обнаруживает только один элемент.
Вам нужно пройти через каждый элемент в DataList
и удалить каждый из них.
$newProduct = Product::create();
$products = Product::get()->filter(array('Price' => 26.32));
foreach ($products as $product) {
$product->delete();
}
$products->removeAll()
также будет работать. Он вызывает remove()
, который вызывает removeByID($id)
и delete()
для каждого элемента в списке