03-请求与联表查询

controller>index.php 

<?php
namespace app\controller;

use app\BaseController;

//! 2、引入Db门面类
use think\facade\Db;

//! 15、引入Request门面类
use think\facade\Request;

use app\model\OykUser;
use app\model\User;

public function three(){
     //! 1、method方法 获取当前请求的类型
         print_r(Request::method());

     // 比如我们php做接口,给vue,小程序,app
     // 我们要保证数据的安全,就必须弃掉get
         if(Request::method()!='POST'){
             echo '请用post请求';
             exit;
         }
         echo 'post提交后返回的数据';
         exit;

     //! 2、isGet,isPost
         if(Request::isPost()){
             echo'post提交';
         }else{
             echo'get提交';
         }

         print_r(Request::request());
         print_r(Request::server());

         echo time();
         echo '<br>';
         echo Request::server()['REQUEST_TIME'];

     //! 联表查询
     // 链式操作,任何操作都要增加表的名称,因为是联表查询

     // 可以给表起别名
         $ret = Db::table('oyk_user u')->join('oyk_order o','u.uid = o.uid')->select();
     // 起别名还有别的方式
         $ret = Db::table('oyk_user')->alias('u')->join('oyk_order o','u.uid = o.uid')->select();
         print_r($ret);

     // 左边就是table里的 oyk_user,全部显示出来
         $ret = Db::table('oyk_user')
                        ->alias('u')
                        ->leftJoin('oyk_order o','u.uid = o.uid')
                        ->select();
         print_r($ret);

         $OykUser = new OykUser();
         $OykUser->lists();

        $User = new User();
        $User->lists();
        $User->one();
        $data = [
            'nickname' => '小编20',
            'password' => '123456',
            'phone' => '13475505533'
        ];
        $User->insert($data);

    }

model>OykUser.php

<?php
namespace app\model;
use think\Model;

class OykUser extends Model{
    public function lists(){
        // Db是在controler里面使用的,model使用类名本身引用数据库
        // select是tp自带的方法,在每个model里都能使用
        $ret = OykUser::select();
        print_r($ret);
    }
}

model>User.php

<?php
// !如果加了表前缀 oyk,则使用model下的User.php
namespace app\model;
use think\Model;

class User extends Model{

    // 更改类默认引用的表名,否则默认第一张
       protected $table = "ork_order";

    // 更改类默认引用的链接名(数据库),否则默认第一个数据库
       protected $connection = 'dsp';

    // 设置主键(必须手动设置)
       protected $pk = 'uid';

    // 数据表废弃字段(数组)
       protected $disuse = [
           'name',
           'address'
    ];

    // 5.数据类型是php的类型,不存在tinyint之类
    protected $type = [
        'uid'=>'int',
        'nickname'=>'string',
        'phone'=>'string',
        'status'=>'int'
    ];

    public function lists(){
        // Db是在controler里面使用的,model使用类名本身引用数据库
        // 1.select是tp自带的方法,在每个model里都能使用
           $ret = OykUser::select();
           print_r($ret);

        // 2.默认叫id where,find都是可以用的,返回的是对象,所有的链式操作都是可以用的
           $ret = User::where('uid',10)->find();

        // 3.结果 跟controller用的门面db是一样的
           print_r($ret['nickname']);

        // 4.学过的数据处理都是可以用的
           print_r($ret->toArray());

        $ret = User::select();
        foreach($ret as &$ret_s){
            if($ret_s['status'] == 1){
                $ret_s['status'] = '开启';
            }else{
                $ret_s['status'] = '关闭';
            }
        }

        print_r($ret->toArray());

    }

    public function one(){
        $ret = User::find(1);
        if($ret['status'] == 1){
            $ret['status'] = '开启';
        }else{
            $ret['status'] = '关闭';
        }
        print_r($ret->toArray());
    }

    //  获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换。
    // 6.获取器 格式 get+字段+Attr
    // 6.1. 会接收一个参数
    public function getStatusAttr($v){
        // 6.2. 所有的状态都会传到这个方法里
        print_r($v);
        if($v == 1){
            $ret = '开启';
        }else{
            $ret = '关闭';
        }
        // 这里要return回去,给查询的那条语句
        return $ret;

        $arr = [
            0=>'禁用',
            1=>'开启',
            2=>'待审核'
        ];
        return $arr[$v];

        // 直接返回数据,没有把$v这个变量使用上是不对的,例如
        return ['0'=>'禁用','1'=>'启用'];
    }

    public function insert($data){
        $ret = User::create($data);
        // 注意,数据结果也是要返回的,model里的任何对外方法,都要用return返回值
        return $ret;
    } 

    // 7.修改器:set+字段 +Attr 创建一个方法名
    // 7.1会接收两个传值,第一个是字段值,第二个是全部的值
    public function setPasswordAttr($v,$all){
        // print_r($v);
        // print_r($all);
        return md5($v);
    }

    //小结

    // 1.联表查询
    // 2.model创建
    // 3.model查询数据库
    // 4.model的配置
    // 5.model获取器,修改器
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七色的天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值