我是Doctrine和Code Igniter的新手,我遇到了我的一個表中的問題。Doctrine枚舉類型不允許添加非枚舉值嗎?
我有,我認爲將只允許4個不同的字母(用於測試在這個時間點)
<?php
class Photo extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('photo_path', 'string', 255, array('unique' => 'true'));
$this->hasColumn('category', 'enum', null,
array('values' => array('a', 'b', 'c', 'd'))
);
$this->hasColumn('token', 'string', 255);
}
public function setUp()
{
$this->actAs('Timestampable');
}
public function preInsert($event)
{
$this->token = (sha1(rand(11111, 99999)));
}
}
我有了一個選擇框和一個上傳表單視圖模型
<?php echo validation_errors('<p class="error">','</p>'); ?>
<div id="upload">
<?php
$categoryOptions= array(
'' => '',
'a' => 'a',
'b' => 'b',
'c' => 'c',
'1' => '1'
);
echo form_open_multipart('admin/addImage');
echo form_upload('userfile');
echo form_dropdown('letter', $categoryOptions);
echo form_submit('upload', 'Upload!');
echo form_close();
?>
</div>
當我從選擇框中選擇'1'時,我希望Doctrine拋出一個錯誤並且不插入那條記錄,但是它會插入一個'1'類別。有沒有我不這樣做,以便枚舉列限制輸入?
在此先感謝。
好的 - 所以我已經添加到我的代碼點火器插件文件。當我將該字段插入'1'時,字母'a'出現在數據庫中(我猜是因爲它是枚舉數組中的第一個字母?如果我通過像'ahjkh'這樣的亂碼,字段在數據庫中顯示爲空即使我在hastable行中添加了'notnull'=> true,所以要使用驗證鉤子,比如prevalidate,有沒有辦法從表格定義中獲取枚舉數組,或者是否需要重新創建數組這個函數只是使用in_array嗎?非常感謝。 – Rapture 2010-11-26 21:05:02