您好,登錄后才能下訂單哦!
本篇內容介紹了“怎么解決phalcon model在插入或更新時會自動驗證非空字段的問題”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在使用phalcon的insert和update功能時,因為數據庫所有的字段設置的都是NOT NULL,而phalcon的model在插入或更新之前會自動判斷字段是否需要必填,因此導致有空字段時無法存入。
開始遇到這問題時,想到兩種解決方法:
一、改數據庫字段,把NOT NULL改為可以為空。
但該數據庫還得去找DBA,而且為了性能,DBA要求一般沒有特殊情況,字段必須是NOT NULL,所以該方案否決。
二、給可以為空的字段設置默認值。
想過各種默認值,覺得空格最符合,但是賦值空格后,數據庫里存的也會是空格,像一些empty和==''等判斷會失效,很可能會影響一些業務邏輯,想想,還是放棄該方案。
最后還是上網各種搜,phalcon的資料太少,百度根本搜不出來,最后轉戰google,功夫不負有心人,終于給我找到些蛛絲馬跡,最后再根據蛛絲馬跡找出來真正的解決方案。同樣有兩種,如下:
一、給可以為空的字段單獨設置規則
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']); }
這種方法可以完美解決問題,比較麻煩的是,需要設置每個可以為空的字段。
二、關閉phalcon對字段是否為空的判斷
public function initialize(){ $this->setup( array('notNullValidations'=>false) ); }
該方法直接把底層判斷字段是否為空的邏輯關閉了,可以一勞永逸的解決這個問題,缺點就是,自己前后臺得做好必填字段的判斷。
“怎么解決phalcon model在插入或更新時會自動驗證非空字段的問題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。