欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

phalcon model在插入或更新時會自動驗證非空字段的解決辦法

 更新時間:2016年12月29日 16:55:25   作者:咖喱土豆雞塊  
這篇文章主要介紹了phalcon model在插入或更新時會自動驗證非空字段的解決辦法,需要的朋友可以參考下

對phalcom框架不了解的朋友可以點擊了解下。

phalcon框架使用指南

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

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

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

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

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

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

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

一、給可以為空的字段單獨設(shè)置規(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']);
}

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

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

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

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

相關(guān)文章

  • php+ajax導(dǎo)入大數(shù)據(jù)時產(chǎn)生的問題處理

    php+ajax導(dǎo)入大數(shù)據(jù)時產(chǎn)生的問題處理

    介紹:就是想實現(xiàn)簡單的ajax上傳數(shù)據(jù),但是當數(shù)據(jù)量較大的時候,問題就一個一個接著來了,其實數(shù)據(jù)也不是很大,就是csv格式數(shù)據(jù) 不到5w條數(shù)據(jù)。大小5M,一開始認為這個很簡單,就是先上傳一下文件,然后讀取一下,存到數(shù)據(jù)庫就好了,結(jié)果,可能我比較菜,弄了半天做出這個功能。環(huán)境是linux.
    2014-06-06
  • CentOS 安裝 PHP5.5+Redis+XDebug+Nginx+MySQL全紀錄

    CentOS 安裝 PHP5.5+Redis+XDebug+Nginx+MySQL全紀錄

    這篇文章主要介紹了在CentOS系統(tǒng)環(huán)境下安裝 PHP5.5+Redis+XDebug+Nginx+MySQL開發(fā)環(huán)境的全過程,非常的細致詳盡,推薦給有需要的小伙伴們參考下吧。
    2015-03-03
  • ThinkPHP進程計數(shù)類Process用法實例詳解

    ThinkPHP進程計數(shù)類Process用法實例詳解

    這篇文章主要介紹了ThinkPHP進程計數(shù)類Process用法,以實例形式較為詳細的分析了Process類的定義及進程計數(shù)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • PHP 使用memcached簡單示例分享

    PHP 使用memcached簡單示例分享

    在很多場合,我們都會聽到 memcached 這個名字,但很多同學(xué)只是聽過,并沒有用過或?qū)嶋H了解過,只知道它是一個很不錯的東東。這里簡單介紹一下,memcached 是高效、快速的分布式內(nèi)存對象緩存系統(tǒng),主要用于加速WEB動態(tài)應(yīng)用程序。今天我們就先來簡單探討下memcached的用法
    2015-03-03
  • PHP中is_file()函數(shù)使用指南

    PHP中is_file()函數(shù)使用指南

    php中is_file()函數(shù)是用來判斷文件是否存在,使用方法也非常的簡單,有需要的小伙伴可以參考下。
    2015-05-05
  • PHP內(nèi)存緩存功能memcached示例

    PHP內(nèi)存緩存功能memcached示例

    這篇文章主要介紹了PHP內(nèi)存緩存功能memcached示例,簡單的介紹了memcached,是php操作memcached的典型應(yīng)用,有需要的朋友可以來了解一下,
    2016-10-10
  • Yii Framework框架中事件和行為的區(qū)別及應(yīng)用實例分析

    Yii Framework框架中事件和行為的區(qū)別及應(yīng)用實例分析

    這篇文章主要介紹了Yii Framework框架中事件和行為的區(qū)別及應(yīng)用,結(jié)合實例形式分析了Yii Framework框架中事件和行為的相關(guān)概念、原理、區(qū)別及應(yīng)用操作技巧,需要的朋友可以參考下
    2020-04-04
  • PHP 7.0.2 正式版發(fā)布

    PHP 7.0.2 正式版發(fā)布

    七年以來,PHP一直是第四大最流行的編程語言,驅(qū)動全球超過2億多個網(wǎng)站,全球超過81.7%的公共網(wǎng)站在服務(wù)器端采用PHP。PHP在這個星期有了自2004年以來最大的飛躍,因為PHP 7已經(jīng)發(fā)布
    2016-01-01
  • 最新評論