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获取器,修改器
}