12月3日:thinkphp模型与数据库相同的部分

定义

定义一个模型类

<?php

namespace app\index\model;
use think\Model;

//定义一个User模型类
class User extends Model{
    //默认主键为自动识别,如果需要指定,可以设置属性
    //protected $pk = 'uid';  //$pk代表主键,primary key的缩写
}

模型调用的常用两种方法

 public function modelTest(){
        //第一种方法:静态方法
        $userModel = \app\index\model\User::get(1);
        dump($userModel); //返回类型为对象类型
        //第二种方法:实例化模型
        $userModel = new  \app\index\model\User;
        $userModel->name('admin');
        //dump($userModel);       //返回类型为对象类型
    }

官方文档中其他两种

模型调用的其他两种方法

 拓展

前后端页面中的success方法和api中的success方法不同

前后端中的sucess方法
api中的success方法

 不同点:

前后端页面显示的success方法success()

 /**
     * 操作成功跳转的快捷方法
     * @access protected
     * @param mixed  $msg    提示信息
     * @param string $url    跳转的 URL 地址
     * @param mixed  $data   返回的数据
     * @param int    $wait   跳转等待时间
     * @param array  $header 发送的 Header 信息
     * @return void
     * @throws HttpResponseException
     */
    protected function success($msg = '', $url = null, $data = '', $wait = 3, array $header = []){}

api中的success()

/**
     * 操作成功返回的数据
     * @param string $msg    提示信息
     * @param mixed  $data   要返回的数据
     * @param int    $code   错误码,默认为1
     * @param string $type   输出类型
     * @param array  $header 发送的 Header 信息
     */
    protected function success($msg = '', $data = null, $code = 1, $type = null, array $header = [])
    {
        $this->result($msg, $data, $code, $type, $header);
    }

模型的初始化

模型同样支持初始化,与控制器的初始化不同的是,模型的初始化是重写Modelinitialize

第一种调用think目录下model中的initialize方法

 还可以使用init()静态方法

 protected static function init(){
        //自定义静态初始化方法
    }

与数据库操作基本相似,模型对应mvc中的m是用来操作数据库的

新增

实例化对象

public function modelTest1(){
        //使用实例化方法进行新增
        $userModel = new \app\index\model\User;
        $userModel->username = 'zhangsan';
        $userModel->save();
        dump($userModel->id);//获取自增id
    }

 静态方法

//新增数据
    public function modelTest1(){
        //静态方法
        $user = \app\index\model\User::create([
            'username'  =>  'thinkphp',
            'email' =>  'thinkphp@qq.com'
        ]);
        dump($user->username);
        dump($user->email);
        dump($user->id); // 获取自增ID
    }

更新

我觉得官方文档比我描述的更仔细

更新 · ThinkPHP5.0完全开发手册 · 看云

其中需要注意的点是save()在模型处理中可用作更新也可用作保存

//save()更新数据与保存数据
    public function modelTest2(){
        //保存数据
        $userModel = new \app\index\model\User;
        $userModel->username = 'lisi';
        $userModel->save();
        //修改数据
        //其一:查找并更新
        $user = \app\index\model\User::get(2);
        $user->username     = 'thinkphp';
        $user->email    = 'thinkphp@qq.com';
        $user->save();
        //其二:直接更新数据
        $user = new User;
        // save方法第二个参数为更新条件
        $user->save([
            'name'  => 'thinkphp',
            'email' => 'thinkphp@qq.com'
            ],['id' => 1]);
    }

删除官方文档模型删除

删除模型

$user = User::get(1);
$user->delete();

根据id删除字段

User::destroy(1);
// 支持批量删除多个数据
User::destroy('1,2,3');
// 或者
User::destroy([1,2,3]);

查询

与数据库的查询相差无异,官方文档模型查询

// 获取某个用户的积分
User::where('id',10)->value('score');    //value():单条字符串类型数据,跟find()方法类似
// 获取某个列的所有值
User::where('status',1)->column('name');  //column():返回数据集为索引数组,跟select()相似  

聚合(模型聚合查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值