thinkphp5 模型使用

Posted 狂鸟·凡尘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp5 模型使用相关的知识,希望对你有一定的参考价值。

模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写。

namespace appindexmodel;

设置数据表

use thinkModel;
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    = thinkphp@qq.com;
$user->save();

也可以使用data方法批量赋值:

$user = new User;
$user->data([
    name  =>  thinkphp,
    email =>  thinkphp@qq.com]);
$user->save();

添加多条数据

$user = new User;
$list = [
    [name=>thinkphp,email=>thinkphp@qq.com],
    [name=>onethink,email=>onethink@qq.com]];
$user->saveAll($list);

saveAll方法新增数据默认会自动识别数据是需要新增还是更新操作,当数据中存在主键的时候会认为是更新操作;

查找并更新

$user = User::get(1);
$user->name     = thinkphp;
$user->email    = thinkphp@qq.com;
$user->save();

直接更新数据

$user = new User;// save方法第二个参数为更新条件
$user->save([
    name  => thinkphp,
email => thinkphp@qq.com]
,[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]];
    }}

获取器方法的第二个参数传入的是当前的所有数据数组。

以上是关于thinkphp5 模型使用的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP5.0 模型调用

多图上传控制器及模型代码thinkphp5+layui实现多图上传保存到数据库,可以实现图片自由排序,自由删除。

thinkphp5 模型批量增加数据小记

ThinkPHP5.0 模型查询操作

thinkphp5 模型表关联

thinkphp5中的model模型层,有啥用