php (thinkphp(二) 模型)

本文详细介绍了ThinkPHP框架中模型的操作,包括创建模型、设置主键和表名、数据的添加、更新和删除,以及软删除和查询。通过示例展示了如何使用模型实例化、保存数据、更新特定字段、删除记录以及使用获取器处理原始数据。
部署运行你感兴趣的模型镜像

1.  模型操作 

        php think make:model  模块名/模型名(首字母大写)
            
        # 非必须
        protected  $pk = 'id';             # 设置主键名称
        protected  $table = 'think_user';   #设置当前模型对应的完整数据表名称

        // 模型实例化
        //$model = new Student();
         $model = model('student');

  1.1  添加数据
         $data = $request->post();

     ## 添加方案一:
        $model = new Student();
        // 方式一:直接保存
        $ret = $model->save($data);
        // 方式二:过滤保存部分字段
        $ret = $model->allowField(['title','name'])->save($data);
        
      ## 添加方案二:
        $ret = Student::create($data);

 1.2  更新数据

         User::where('id',1)->update(['name'=>'thinkphp']);

 

1.3   删除数据
        // 方式一:
        $model = Student::find(217); 或 $model=Student::get(217);
        $ret = $model->delete();

        // 方式二 : 静态方法
        $ret = Student::destroy(217);
        // 删除多条
        $ret = Student::destroy([1,2,3]);

6.4   软删除
            use think\model\concern\SoftDelete
            # mode类里面 引入:
            use SoftDelete;
            // 删除的字段名
            protected $deleteTime = 'delete_time';
                
           # 操作方法
             // 软删除
           $ret = Student::destroy(217);
            // 真删除
           $ret = Student::destroy(217,true);
            
     6.5   trait 解决多继承   php5.4    

     6.6  模型查询数据

             //get直接查询,不可以带 where 条件; find 两者都可以,推荐

          

       $ret = Student::get(217);
         $ret = Student::find(217);     ## 推荐使用 find
         $ret = Student::where('id',217)->find();  #这种只能使用find

         // 条件分组 where() or ()
            
        //查询
        $ret = Student::where('title','我是张三')->select();
        // 动态查询 getBy固定+ 字段名(首字母大写)
        $ret = Student::getByTitle('我是张三');

     6.7 获取器 对原始数据自动处理

          // 方式一
        $ret = Student::withAttr('title',function($value,$data){
            return 'hello world'.$value
        })->where('id','>',5)->select();

        // 方式二 (在model 里面设置)-- 获取器 get字段名Attr,如果有下划线,下划线的首字母大写
public function getCreateTimeAttr($value){
    return date('Y年m月d日 H时i分s秒',strtotime($value));
}    

   

<?php 


namespace app\common\model;

use think\Model;

class Student extends Model{
    # 非必须
    protected  $pk = 'id';             # 设置主键名称
    protected  $table = 'student';   #设置当前模型对应的完整数据表名称

	public function aa(){
		return 'aab';
	}
}
<?php

namespace app\index\controller;

use think\Controller;

// 引入模型
use app\common\model\Student;

use think\Request;


class Students extends Controller{
    public function demo(){
        echo '测试';
    }

    // 展示页面
    public function page(){
        return view('index@student/add');
    }

    // 通过 post传参,保存数据
    public function add(Request $request){
        // 模型实例化
        //$student = new Student();
        $student = model('student');
        $value = $request->post();
        // ---- 方法一 --------- 返回true
        // 保留全部字段
        $ret = $student->save($value);
        // 过滤保存部分字段
        //$ret = $student->allowField(['name','number'])->save($value);
        // ---- 方法二 ------- 返回插入的数据
        $ret = Student::create($value);
        dump($ret);
    }

     //更新数据
    public function upd(){
        $data = ['content'=>'这条是更新数据'];
        $ret = Student::where('id',22)->update($data);
        dump($ret);
    }

    //删除数据
    public function del(){
        // 方式一:
        // $model = Student::find(23);
        // $model = Student::get(23);
        // $ret = $model->delete();

        // 方式二 静态方法
        $ret = Student::destroy(22);
        $ret = Student::destroy([1,2,3]);
        dump($ret);
        
    }

    // 软删除 -- 在 model引入SoftDelete后,可进行软删除
    public function delr(){
        $ret = Student::destroy(20);
        dump($ret);
    }

    // 模型查询数据  get直接查询,不可以带 where 条件; find 两者都可以,推荐
    public function sele(){
        // $ret = Student::get(19);
        // $ret = Student::find(19);
        // $ret = Student::where('id',19)->find();

        // 条件分组 where() or ()
         
        //查询字段
        // $ret = Student::where('name','张三')->select();
        // 动态查询 getBy固定+ 字段名(首字母大写)
        $ret = Student::getByName('张三');

        dump($ret);
    }

    // 获取器 对原始数据自动处理
    public function getAll(){
        $ret = Student::withAttr('name',function($value,$data){
            return '你是最美的'.$value;
        })->where('id',19)->select();

        dump($ret);
    }



}

 

您可能感兴趣的与本文相关的镜像

EmotiVoice

EmotiVoice

AI应用

EmotiVoice是由网易有道AI算法团队开源的一块国产TTS语音合成引擎,支持中英文双语,包含2000多种不同的音色,以及特色的情感合成功能,支持合成包含快乐、兴奋、悲伤、愤怒等广泛情感的语音。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值