学thinkphp5 day5 模型学习-模型定义\增加\查看

需要写在模块的model目录下

注意1:在TP5里面模型也不在使用类后缀,直接就是使用去除表前缀后的名称作为模型的名称。(模型名称使用大驼峰的方式)
例如:表的名称为 sh_admin 对应的模型文件名称 Admin.php
例如:表的名称为 sh_goods_attribute 对应的模型文件名称 GoodsAttribute.php

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

定义sh_user表
建一个和模型同名(不包括前缀)的表
在这里插入图片描述

基本操作-增加

完成数据的增加主要有如下几种方法

  • 模型对象的save方法(先为对象设置属性)
  • 模型类的create静态方法
  • 模型对象的saveAll批量添加方法

实操
在这里插入图片描述


<?php
/**
 * Created by PhpStorm.
 * User: Negoowen
 * Date: 2019/9/3
 * Time: 14:10
 */
namespace app\index\controller;

use think\Controller;
use app\index\model\User;
use think\Request;

class Modeltest extends Controller{

    //model方法学习
    /**
     * @param Request $request
     * @throws \Exception
     */
    public function test(Request $request){

        
        //1.数据的增加-模型对象的save方法(先对对象设置属性)
        $userModel = new User();
        //id username password email ORM
        $userModel->username='test1';
        $userModel->password=md5('test1');
        $userModel->email = 'test1@aaa.com';
        $status = $userModel->save();
        halt($status);


        //2.模型类的create静态方法,出现的原因主要是由于下面的这种设置过于繁琐

        $insertData = [
            'username' => 'test2',
            'password' => md5('test2'),
            'email' => 'test2@qq.com',
        ];
        //实际肯定是从表单进行接收
        //$data = input('post.');
        $obj = User::create($insertData);
        //返回值是一个模型对象
        var_dump($obj->getLastInsID());
        halt($obj);


        //批量插入数据
        $allData = [
            [
                'username' => 'test31',
                'password' => md5('test31'),
                'email' => 'test31@qq.com',
            ],
            [
                'username' => 'test32',
                'password' => md5('test32'),
                'email' => 'test32@qq.com',
            ],
            [
                'username' => 'test33',
                'password' => md5('test33'),
                'email' => 'test33@qq.com',
            ],
        ];

        $userModel = new User();
        //返回值是一个数组,数组中每一个元素是成功插入后的对象
        $status = $userModel->saveAll($allData);

        halt($status);

    }
}

基本操作-查看

查询数据主要有如下几种方法

  1. 模型类的get静态方法【存在返回值为对象,否则为null】
  2. 通过字段查询getByFieldname()方法
  3. 根据条件查询get([‘username’ => ‘root’])
  4. where方法查询->find()
  5. where方法查询->select()
  6. 模型类的all静态方法和select静态方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现`不行,寻找原因~!!!
转get函数

在这里插入图片描述
get()函数运用tatic::parseQuery方法进行查询
转tatic::parseQuery

在这里插入图片描述
发现$data参数传入之后会首先判断是否为一个数组,如果是,会进行查询。不是会进行类比对。

在这里插入图片描述
在这里插入图片描述

get自带limit1!!!被坑了很久

//数据查询
        //

        //1.模型类get静态方法
        $id = ['id' => 11];//主键id id必须为一个数组才可以  id必须为一个数组才可以
        //存在则返回模型对象,如果要获取值,可以使用模型的属性进行获取
        //如果要使用foreach进行遍历,需要转化为数组
        //$obj->toArray();
        $info = User::get($id);//get返回符合条件的第一条数据
        echo "<h2>模型对象的属性获取</h2>";
        var_dump($info->username);
        echo "<hr>";
        echo "<h2>模型对象的遍历操作</h2>";
        $arr = $info->toArray();
        var_dump($arr);
        foreach ($arr as $k=>$v) {
            echo $v."</br>";
        }
        echo "</hr>";
        halt($info);//方法一测试成功,但是目前只能返货id的第一个数据未解决


        //2.模型类的get方法(传递其他字段为条件)//where方法
        //参数为一个关联数组,
        $info = User::get(['username'=>'test2']);
        var_dump($info->password);
        //var_dump($info);
        //只能查出第一组

        //3.where方法  如果要获取单条数据使用find()
        $info = User::where('username','=','test2')->find();//find指挥查找到符合条件的第一条数据
        $arr = $info->toArray();
        halt($arr);


        //4.根据字段查询
        $userModel = new User();
        //注意getBy是固定的,后面的字段是表中的字段,使用大驼峰表示
        $info = $userModel->getByUsername('test2');
        $info = $userModel->getByEmail('test31@qq.com');
        var_dump($info->toArray());


        //5.select方法 模型类 ,模型对象也可以
        //也可以加limit限制;不需要的话去掉即可
        //$data = User::select();//获取所有数据
        $data = User::where('username','=','test31')->limit(1)->select();//能查找出全部
        var_dump($data);
        */

        //6.获取所有数据
        $data = User::all();//返回的数据是一个数组,但每个元素是一个模型对象
        echo '</pre>';
        //halt($data);

PS:

在这里插入图片描述

在这里插入图片描述

get()\find()\all()\select()区别
http://www.xuexianswer.com/5863.html?btwaf=17697633

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值