У меня есть класс AdminUpload
именем AdminUpload
котором хранятся две переменные: UploadDate
(которая всегда ставит на ставку в текущую дату) и Total
, которая является int.
Функция updateUploads()
вызывается и сохраняет текущую дату и увеличивает значение Total
на 1 каждый раз при его вызове.
<?php class AdminUpload extends DataObject { private static $db = array( 'UploadDate' => 'Date', 'Total' => 'int' ); // Tell the datagrid what fields to show in the table private static $summary_fields = array( 'ID' => 'ID', 'UploadDate' => 'Current Date', 'Total' => 'Version Number' ); public function updateUploads(){ $uploadDate = SS_Datetime::now(); $this->UploadDate = $uploadDate; $this->Total++;//increment the value currently stored in the database each time $this->write(); }
}
То, что я хочу, – это когда кто-то загружает новое изображение в представлении администратора, тогда updateCache()
вызывается во время onAfterWrite()
. Однако я хочу сохранить только одну запись в базе данных, поэтому каждый раз, когда я загружаю изображение, я хочу иметь только одну запись в AdminUpload
базы данных AdminUpload
.
public function onAfterWrite(){ $updateGallery = parent::onAfterWrite(); $adminUploading = AdminUpload::get(); $adminUploading -> updateUploads(); return $updateGallery; }
Я никогда не пытался выполнять вызов функции в SilverStripe, как это, это кажется достаточно простым, но поскольку я не собираюсь добавлять новую запись в базу данных с каждым вызовом функции updateUploads (), вот где я застрял , Любые советы будут полезны …