Hi guys!
I'm having a problem that I'm hoping someone here can help me with.
First the basics:
I have a dataobject of type Item. Item has 3 static properties - Name(Text), Description(HTMLText) and Price(Currency).
class Item extends DataObject{
static $db = array(
'Name' => 'Text',
'Description' => 'HTMLText',
'Price' => 'Currency'
);
static $defaults = array(
'Name' => 'Hamburger',
'Price' => 4.99
);
static $has_one = array(
'ItemCategories' => 'ItemCategory'
);
function getCMSFields_forPopup() {
$fields = new FieldSet();
$fields->push( new TextField('Name'));
$fields->push( new TextareaField('Description'));
$fields->push( new CurrencyField('Price'));
return $fields;
}
}
When I try to add a new Item, it errors, like this:
[User Error] Couldn't run query: INSERT INTO `Item` SET Created = NOW() Field 'Price' doesn't have a default value
POST /bbd/s/admin/cms/EditForm/field/Meals/item/2/DetailForm/field/ItemCategories/item/3/DetailForm/field/Items/AddForm?ctf[Items][start]=0&ctf[Items][per_page]=10&ctf[Items][showall]=0&ctf[Items][sort]=Created&ctf[Items][sort_dir]=DESC&ctf[Items][search]=&ctf[Items][filter]=
Line 401 in C:\****\bbd\s\sapphire\core\model\MySQLDatabase.php
Source
392 }
393
394 function databaseError($msg, $errorLevel = E_USER_ERROR) {
395 // try to extract and format query
396 if(preg_match('/Couldn\'t run query: ([^\|]*)\|\s*(.*)/', $msg, $matches)) {
397 $formatter = new SQLFormatter();
398 $msg = "Couldn't run query: \n" . $formatter->formatPlain($matches[1]) . "\n\n" . $matches[2];
399 }
400
401 user_error($msg, $errorLevel);
402 }
403 }
404
405 /**
406 * A result-set from a MySQL database.
407 * @package sapphire
Trace
* Couldn't run query: INSERT INTO `Item` SET Created = NOW() Field 'Price' doesn't have a default value
Line 401 of MySQLDatabase.php
When I change the Price's type from Currency to Text, I can add a new Item without problems. I can also update existing items without error, whether the type is Currency or Text.
Can I anyone give me an idea what I'm missing in all this?