phalcon model在插入或更新时自动验证非空字段怎么解决
发布:smiling 来源: PHP粉丝网 添加日期:2018-06-19 10:57:59 浏览: 评论:0
在使用phalcon的insert和update功能时,因为数据库所有的字段设置的都是NOT NULL,而phalcon的model在插入或更新之前会自动判断字段是否需要必填,因此导致有空字段时无法存入.
开始遇到这问题时,想到两种解决方法:
一、改数据库字段,把NOT NULL改为可以为空。
但该数据库还得去找DBA,而且为了性能,DBA要求一般没有特殊情况,字段必须是NOT NULL,所以该方案否决。
二、给可以为空的字段设置默认值。
想过各种默认值,觉得空格最符合,但是赋值空格后,数据库里存的也会是空格,像一些empty和==''等判断会失效,很可能会影响一些业务逻辑,想想,还是放弃该方案。
最后还是上网各种搜,phalcon的资料太少,百度根本搜不出来,最后转战google,功夫不负有心人,终于给我找到些蛛丝马迹,最后再根据蛛丝马迹找出来真正的解决方案。同样有两种,如下:
一、给可以为空的字段单独设置规则,代码如下:
- publicfunctionskipValidation($skipers=[])
- {
- foreach($skipersas$skiper) {
- if(emptyempty($this->$skiper)) {
- $this->$skiper=new\Phalcon\Db\RawValue('""');
- }
- }
- }
使用的时候,代码如下:
- publicfunctionbeforeValidation()
- {
- $this->skipValidation(['tag','source_url']);
- }
这种方法可以完美解决问题,比较麻烦的是,需要设置每个可以为空的字段。
二、关闭phalcon对字段是否为空的判断,代码如下:
- publicfunctioninitialize(){
- $this->setup(
- array('notNullValidations'=>false)
- );
- }
该方法直接把底层判断字段是否为空的逻辑关闭了,可以一劳永逸的解决这个问题,缺点就是,自己前后台得做好必填字段的判断.
Tags: 字段 phalcon model
相关文章
- ·点击浏览器的后退按钮后,所有字段的信息都被清空了?(2013-11-12)
- ·php mysql 数据表获取字段名,长度,信息(2014-09-11)
- ·php获取字段名示例分享(2020-10-06)
- ·php获取mysql字段名称和其它信息的例子(2020-11-15)
- ·php中单个数据库字段多列显示(单字段分页、横向输出)(2021-03-26)
- ·PHP处理大量表单字段的便捷方法(2021-05-10)
- ·php校验表单检测字段是否为空的方法(2021-05-17)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)