怎么解決phalconmodel在插入或更新時會自動驗證非空字段的問題-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“怎么解決phalcon model在插入或更新時會自動驗證非空字段的問題”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

專業(yè)從事成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設,高端網(wǎng)站制作設計,微信平臺小程序開發(fā),網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團隊竭力真誠服務,采用H5場景定制+CSS3前端渲染技術(shù),成都響應式網(wǎng)站建設公司,讓網(wǎng)站在手機、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項小組,與您實時在線互動,隨時提供解決方案,暢聊想法和感受。

在使用phalcon的insert和update功能時,因為數(shù)據(jù)庫所有的字段設置的都是NOT NULL,而phalcon的model在插入或更新之前會自動判斷字段是否需要必填,因此導致有空字段時無法存入。

開始遇到這問題時,想到兩種解決方法:

一、改數(shù)據(jù)庫字段,把NOT NULL改為可以為空。

但該數(shù)據(jù)庫還得去找DBA,而且為了性能,DBA要求一般沒有特殊情況,字段必須是NOT NULL,所以該方案否決。

二、給可以為空的字段設置默認值。

想過各種默認值,覺得空格最符合,但是賦值空格后,數(shù)據(jù)庫里存的也會是空格,像一些empty和==''等判斷會失效,很可能會影響一些業(yè)務邏輯,想想,還是放棄該方案。

最后還是上網(wǎng)各種搜,phalcon的資料太少,百度根本搜不出來,最后轉(zhuǎn)戰(zhàn)google,功夫不負有心人,終于給我找到些蛛絲馬跡,最后再根據(jù)蛛絲馬跡找出來真正的解決方案。同樣有兩種,如下:

一、給可以為空的字段單獨設置規(guī)則

public function skipValidation($skipers=[])
 {
  foreach ($skipers as $skiper) {
   if (empty($this->$skiper)) {
    $this->$skiper = new \Phalcon\Db\RawValue('""');
   }
  } 
 }

使用的時候:

public function beforeValidation()
{
  $this->skipValidation(['tag','source_url']);
}

這種方法可以完美解決問題,比較麻煩的是,需要設置每個可以為空的字段。

二、關(guān)閉phalcon對字段是否為空的判斷

public function initialize(){
 $this->setup(
  array('notNullValidations'=>false)
 );
 }

該方法直接把底層判斷字段是否為空的邏輯關(guān)閉了,可以一勞永逸的解決這個問題,缺點就是,自己前后臺得做好必填字段的判斷。

“怎么解決phalcon model在插入或更新時會自動驗證非空字段的問題”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

分享文章:怎么解決phalconmodel在插入或更新時會自動驗證非空字段的問題-創(chuàng)新互聯(lián)
新聞來源:http://muchs.cn/article46/djjehg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、電子商務外貿(mào)網(wǎng)站建設、品牌網(wǎng)站建設網(wǎng)站營銷、標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司