1,查询构造器的数组多字段批量查询对比(对于纯等于的数组条件查询没改变),例如:
//TP5.0
model('user')->where(['type'=>2,'username'=>['like','sumer%']])->select()->toArray();
//TP5.1
model('user')->where([['type','=',2],['username','like','sumer%']])->select()->toArray();
2,把不存在的模块访问统一指向一个空模块,在应用配置文件中设置empty_module参数,例如:
// 默认的空模块名
'empty_module' => 'index',
3,如果你的扩展类库不希望放入系统默认的extend目录,在应用配置文件中设置root_namespace参数,例如:
'root_namespace' => [
'my' => '../application/extend/my/',
'org' => '../application/extend/org/',
]
4,tp5.1默认主键为id,如果你没有使用id作为主键名,需要在模型中设置属性,因为tp5.1的模型不会自动识别主键,必须设置pk属性。
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
protected $pk = 'uid';
}
5,tp5.1模型操作:
save
方法返回影响的记录数,并且只有当before_insert或
before_update事件返回false
的时候返回false
,从V5.1.6+
版本开始统一返回布尔值。delete
方法返回影响的记录数,V5.1.6+
版本开始返回布尔值。V5.1.5+
版本,模型增加了getOrFail
方法用于查询,当查询的数据不存在的时候会抛出ModelNotFound
异常。V5.1.23+
版本开始,可以使用findOrEmpty
方法,当查询数据不存在的话,返回空模型而不是Null
。- 如果你是在模型内部获取模型数据,请不要使用
$this->name
的方式来获取数据,请使用$this->getAttr('name')
替代。
6,查询结果为数据集类型的,可使用模型的hidden
/visible
/append
/withAttr
方法进行数据集的输出处理,例如:
// 模型查询返回数据集对象
$list = User::where('id', '>', 0)->select();
// 对输出字段进行处理
$list->hidden(['password'])
->append(['status_text'])
->withAttr('name', function($value, $data) {
return strtolower($value);
});
dump($list);
7,模型中可设置只读字段,字段一旦写入,保护字段不被更改:
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
protected $readonly = ['name', 'email'];
}
5.1版本支持动态设置只读字段,例如:
// 保存更改后的用户数据
$user->readonly(['name','email'])->save();
8,一旦关闭调试模式,发生错误后不会提示具体的错误信息,如果你仍然希望看到具体的错误信息,那么可以在app.php
文件中如下设置:
// 显示错误信息
'show_error_msg' => true,
9,判断查询的数据集是否为空:
$res = (new UserModel())->where([['numid','<>',0],['username','like','zhang%']])->field('numid,username')->select();
if($res->isEmpty()){
echo '未查到1';
}else{
echo '<pre>';print_r($res);
}