/**
* 查询指定的字段是否存在表中
* @param type $field 字段名称
* @return void
* @access protected
*/
protected function issetField($field){
$fields=$this->model->getDbFields();
return array_search($field,$fields);
}
从3.1版本开始,模型的字段缓存文件名全部转换成小写,避免重复生成。
可以通过设置DB_FIELDS_CACHE 参数来关闭字段自动缓存,如果在开发的时候经常变动数据库的结构,而不希望进行数据表的字段缓存,可以在项目配置文件中增加如下配置:
'DB_FIELDS_CACHE'=>false 注意:调试模式下面由于考虑到数据结构可能会经常变动,所以默认是关闭字段缓存的。
如果需要显式获取当前数据表的字段信息,可以使用模型类的getDbFields方法来获取当前数据对象的全部字段信息,例如:
$fields = $User->getDbFields(); 如果你在部署模式下面修改了数据表的字段信息,可能需要清空Data/_fields目录下面的缓存文件,让系统重新获取更新的数据表字段信息,否则会发生新增的字段无法写入数据库的问题。
如果不希望依赖字段缓存或者想提高性能,也可以在模型类里面手动定义数据表字段的名称,可以避免IO加载的效率开销,在模型类里面添加fields属性即可,定义格式如下:
<?php class UserModel extends Model{ protected $fields = array( 'id', 'username', 'email', 'age', '_pk' => 'id', '_autoinc' => true ); } 其中_pk 表示主键字段名称 _autoinc 表示主键是否自动增长类型,定义了fields属性之后,就不会自动获取数据表的字段信息了。如果有修改或者增加字段,必须手动修改fields属性的值。
array_search()
函数在数组中搜索某个键值,并返回对应的键名。
详细说明
array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。
在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。
如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。
语法
array_search(
value,
array,
strict)
参数 描述 value 必需。规定需要搜素的键值。 array 必需。规定被搜索的数组。 strict 可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值:
truefalse - 默认 如果设置为 true,则在数组中检查给定值的类型,数字 5 和字符串 5 是不同的(参见实例 2)。
技术细节
返回值: 如果在数组中找到指定的键值,则返回对应的键名,否则返回 FALSE。
如果在数组中找到键值超过一次,则返回第一次找到的键值所匹配的键名。
PHP 版本: 4.0.5+ 更新日志: 如果向函数传递无效的参数,函数返回 NULL(这个适用于自 PHP 5.3.0 起的所有的 PHP 函数)。
自 PHP 4.2.0 起,如果搜索失败,该函数返回 FALSE,而不是 NULL。
更多实例
在数组中搜索键值 5,并返回它的键名(注意 ""):
<?php
$a=array("a"=>"5","b"=>5,"c"=>"5");
echo array_search(5,$a,true);
?> 输出: b