我正在研究從第三方合作伙伴讀取XML並將數據放入數據庫表中的腳本。我無法控制內容的長度或質量。我想避免添加邏輯來檢查每個字段的長度。插入原則自動截斷值
例如:我在varchar(255)類型的mysql數據庫中有一列,XML導入的值大於255個字符。我想學說插入而不是拋出有消息Doctrine_Validator_Exception前255個字符「1個驗證失敗的標題(長度)」
使用學說1.2
我正在研究從第三方合作伙伴讀取XML並將數據放入數據庫表中的腳本。我無法控制內容的長度或質量。我想避免添加邏輯來檢查每個字段的長度。插入原則自動截斷值
例如:我在varchar(255)類型的mysql數據庫中有一列,XML導入的值大於255個字符。我想學說插入而不是拋出有消息Doctrine_Validator_Exception前255個字符「1個驗證失敗的標題(長度)」
使用學說1.2
我知道你說你「要避免添加邏輯檢查每個字段的長度「,但您沒有指定是出於性能原因還是因爲有很多,而且您也不想單獨編寫代碼。如果是後者,我會用的原則記錄是這樣的:
function set($fieldName, $value, $load = true) {
switch($fieldName) {
case 'id':
case 'foo':
case 'bar':
// list all of the fields that you DON'T want to truncate in this section
break;
default:
$value = substr($value, 0, 255);
}
parent::set($fieldName, $value, $load);
}
此功能覆蓋上記錄的默認設置()方法。它會將所有字段截斷爲與第一部分(id,foo,bar)中列出的字符不匹配的255個字符。
如果這不是你想要的,你可以讓MySQL做截斷,如果你寫過列長度(1265 | Data truncated for column 'xxx' at row 1
),它會發出一個警告,但是當查詢完成時它會被Doctrine丟棄。爲此,您可以將列類型從「字符串」更改爲「blob」,並將第二個參數設置爲null而不是列長度,然後在MySQL中設置適當的限制。