• 模型修改和查询


    前边我们学过save()  saveAll()来保存数据,此方法也可以修改数据

    //使用 get()方法通过主键获取数据,然后通过 save()方法保存修改,返回布尔值; 
    $user = UserModel::get(118); 
    $user->username = '李黑'; 
    $user->email = 'lihei@163.com'; 
    $user->save();
    //通过 where()方法结合 find()方法的查询条件获取的数据,进行修改;
     $user = UserModel::where('username', '李黑')->find();
     $user->username = '李白';
     $user->email = 'libai@163.com'; 
    $user->save();

    save()方法只会更新变化的数据,如果提交的修改数据没有变化,则不更新;

    但如果你想强制更新数据,即使数据一样,那么可以使用 force()方法;

    $user->force()->save();

     

    使用save方法的第二个参数实现过滤更新

        public function show(){
            //实例化模型User
            $user=new User();
            //save 方法两个数组,第一个数组为 要新增或要修改的数据,第二个数组为where条件  成功返回true 否则 flse
            return json($user->save(['bname'=>'du伟'],['bid'=>1]));
        }

    使用静态方法结合 update()方法来更新数据,这里返回的是影响行数;

        public function show(){
            //实例化模型User
            $user=new User();
            //更新bid 为1 的bname=duwei   返回更新的条目
            return json($user::where('bid',1)->update(['bname'=>'duwei']));
        }

    数据查询

      模型类

    <?php 
    namespace app\model;
    use think\Db;
    use think\Model;
    
    class User extends Model{
    
        //继承model基类后,会有delete 和静态destroy其他的一些方法可以调用
        //指定主键
        public $pk='bid';
    
    }

    控制器

        public function show(){
            //通过静态get方法获取模型类主键的信息
            $user=User::get(1);
            return json($user);
        }

     使用where过滤查询,

        public function show(){
            //通过静态get方法获取模型类主键的信息
            $user=new User();
            //使用where过滤查询
            return json($user::where('bid',1)->find());
        }

    不管是 get()方法还是 find()方法,如果数据不存在则返回 Null;

     通过模型->符号,可以得到单独的字段数据(前提是模型对象中已经查到了数据),但是 不建议这么使用

        public function show(){
            //通过静态get方法获取模型类主键的信息
            $user=new User();
            //使用getAttr可以获取一列的信息,前提示已经有了查询如  ->select()->getAttr();或->find()->getattr();
            return json($user::find()->getAttr('bname'));
        }
       public function show(){
            //这样也可以  
           $user = User::find();
           return $user->getAttr('bname');
    
        }

    写在模型端

      模型

    <?php 
    namespace app\model;
    use think\Db;
    use think\Model;
    
    class UserModel extends Model{
    
        //继承model基类后,会有delete 和静态destroy其他的一些方法可以调用
        //指定主键
        public $pk='bid';
    
        public function showGet($str){
            return self::find()->getAttr($str);
        }
    }

    控制器

    <?php 
    namespace app\controller;
    
    use think\Controller;
    use app\model\Article;
    use app\model\User;
    use app\model\UserModel;
    use think\Db;
    class IndexCOntroller extends Controller{
        public function show(){
           $user = new UserModel();
           return $user->showGet('bname');
    
        }
    } 

    通过 all()方法,实现 IN 模式的多数据获取;

    $user = UserModel::all('79, 118, 128');
    $user = UserModel::all([79, 118, 128]);

    使用链式查询得到想要的数据;

    UserModel::where('gender', '男')->order('id', 'asc')
    ->limit(2)->select();

    获取某个字段或者某个列的值;

    UserModel::where('id', 79)->value('username'); UserModel::whereIn('id',[79,118,128])->column('username','id');

    模型支持动态查询:getBy*,*表示字段名;

    UserModel::getByUsername('辉夜');
    UserModel::getByEmail('huiye@163.com');

    模型支持聚合查询;

    UserModel::max('price');
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    ora.vip 1 ONLINE INTERMEDIAT
    SQL Tuning Health-Check Script (SQLHC) (文档 ID 1366133.1)
    ORA-27140: attach to post/wait facility failed
    RU/RUR的安装
    dbms_profiler
    ignite affinity key 并置 究竟是个啥?
    【Study】 TCP/IP协议 -- 计算机网络之应用层篇(04)
    【Study】 TCP/IP协议 -- 计算机网络之传输层篇(03)
    【Study】 TCP/IP协议 -- 计算机网络之网络篇(02)
    【Study】 TCP/IP协议 -- 计算机网络概述(01)
  • 原文地址:https://www.cnblogs.com/xiaowie/p/15682348.html
Copyright © 2020-2023  润新知