小周 2020-04-25
模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写。
namespace app\index\model;
设置数据表
use think\Model;
class User extends Model{
// 设置当前模型对应的完整数据表名称
protected $table = ‘think_user‘;
// 主键默认是自动识别的,如果需要指定
protected $pk = ‘uid‘;
}模型调用
// 实例化模型 $user = new User; $user->name= ‘thinkphp‘; $user->save(); // 或者使用助手函数`model` $user = model(‘User‘); $user->name= ‘thinkphp‘; $user->save();
模型的初始化是重写Model的initialize
//自定义初始化
protected function initialize()
{
//需要调用`Model`的`initialize`方法
parent::initialize();
}新增
$user = new User; $user->name = ‘thinkphp‘; $user->email = ‘‘; $user->save();
也可以使用data方法批量赋值:
$user = new User;
$user->data([
‘name‘ => ‘thinkphp‘,
‘email‘ => ‘‘]);
$user->save();添加多条数据
$user = new User;
$list = [
[‘name‘=>‘thinkphp‘,‘email‘=>‘‘],
[‘name‘=>‘onethink‘,‘email‘=>‘‘]];
$user->saveAll($list);saveAll方法新增数据默认会自动识别数据是需要新增还是更新操作,当数据中存在主键的时候会认为是更新操作;
查找并更新
$user = User::get(1); $user->name = ‘thinkphp‘; $user->email = ‘‘; $user->save();
直接更新数据
$user = new User;// save方法第二个参数为更新条件
$user->save([
‘name‘ => ‘thinkphp‘,
‘email‘ => ‘‘]
,[‘id‘ => 1]);静态方法
User::where(‘id‘, 1)
->update([‘name‘ => ‘thinkphp‘]);或者使用:
User::update([‘id‘ => 1, ‘name‘ => ‘thinkphp‘]);
删除模型数据,可以在实例化后调用delete方法。
$user = User::get(1); $user->delete();
或者通过数据库类的查询条件删除
User::where(‘id‘,‘>‘,10)->delete();
查询
获取单个数据
取出主键为1的数据 $user = User::get(1); echo $user->name;
或者在实例化模型后调用查询方法
$user = new User();// 查询单个数据
$user->where(‘name‘, ‘thinkphp‘)
->find();在实例化模型后调用查询方法
$user = new User();// 查询数据集
$user->where(‘name‘, ‘thinkphp‘)
->limit(10)
->order(‘id‘, ‘desc‘)
->select();聚合
$user = new User; $user->count(); $user->where(‘status‘,‘>‘,0)->count(); $user->where(‘status‘,1)->avg(‘score‘); $user->max(‘score‘);
获取器
获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用:
class User extends Model {
public function getStatusAttr($value)
{
$status = [-1=>‘删除‘,0=>‘禁用‘,1=>‘正常‘,2=>‘待审核‘];
return $status[$value];
}}数据表的字段会自动转换为驼峰法,一般status字段的值采用数值类型,我们可以通过获取器定义,自动转换为字符串描述。
获取器还可以定义数据表中不存在的字段,例如:
class User extends Model {
public function getStatusTextAttr($value,$data)
{
$status = [-1=>‘删除‘,0=>‘禁用‘,1=>‘正常‘,2=>‘待审核‘];
return $status[$data[‘status‘]];
}}获取器方法的第二个参数传入的是当前的所有数据数组。