《PHP實(shí)戰(zhàn):phalcon model在插入或更新時會自動驗(yàn)證非空字段的解決辦法》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):phalcon model在插入或更新時會自動驗(yàn)證非空字段的解決辦法,希望對您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:phalcon教程
PHP學(xué)習(xí)對phalcom框架不了解的朋友可以點(diǎn)擊了解下.
PHP學(xué)習(xí)phalcon框架使用指南
PHP學(xué)習(xí)在使用phalcon的insert和update功能時,因?yàn)閿?shù)據(jù)庫所有的字段設(shè)置的都是NOT NULL,而phalcon的model在插入或更新之前會自動判斷字段是否需要必填,因此導(dǎo)致有空字段時無法存入.
PHP學(xué)習(xí)開始遇到這問題時,想到兩種解決方法:
PHP學(xué)習(xí)一、改數(shù)據(jù)庫字段,把NOT NULL改為可以為空.
PHP學(xué)習(xí) 但該數(shù)據(jù)庫還得去找DBA,而且為了性能,DBA要求一般沒有特殊情況,字段必須是NOT NULL,所以該方案否決.
PHP學(xué)習(xí)二、給可以為空的字段設(shè)置默認(rèn)值.
PHP學(xué)習(xí) 想過各種默認(rèn)值,覺得空格最符合,但是賦值空格后,數(shù)據(jù)庫里存的也會是空格,像一些empty和==''等判斷會失效,很可能會影響一些業(yè)務(wù)邏輯,想想,還是放棄該方案.
PHP學(xué)習(xí)最后還是上網(wǎng)各種搜,phalcon的資料太少,百度根本搜不出來,最后轉(zhuǎn)戰(zhàn)google,功夫不負(fù)有心人,終于給我找到些蛛絲馬跡,最后再根據(jù)蛛絲馬跡找出來真正的解決方案.同樣有兩種,如下:
PHP學(xué)習(xí)一、給可以為空的字段單獨(dú)設(shè)置規(guī)則
PHP學(xué)習(xí)
public function skipValidation($skipers=[])
{
foreach ($skipers as $skiper) {
if (empty($this->$skiper)) {
$this->$skiper = new \Phalcon\Db\RawValue('""');
}
}
}
PHP學(xué)習(xí)使用的時候:
PHP學(xué)習(xí)
public function beforeValidation()
{
$this->skipValidation(['tag','source_url']);
}
PHP學(xué)習(xí)這種方法可以完美解決問題,比較麻煩的是,需要設(shè)置每個可以為空的字段.
PHP學(xué)習(xí)二、關(guān)閉phalcon對字段是否為空的判斷
PHP學(xué)習(xí)
public function initialize(){
$this->setup(
array('notNullValidations'=>false)
);
}
PHP學(xué)習(xí)該方法直接把底層判斷字段是否為空的邏輯關(guān)閉了,可以一勞永逸的解決這個問題,缺點(diǎn)就是,自己前后臺得做好必填字段的判斷.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/2151.html