联表查询
public function three (){
// print_r(Request::post());
// 1、method 请求方法 获取当前请求的类型
// print_r(Request::method());
// PHP做接口 给vue 小程序 app,保证数据安全,必须放弃get传值方式 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 '<hr>';
// echo Request::server()['REQUEST_TIME'];
// 3、联表查询 统计数据 时需要
// join 链式操作 任何操作 都要增加表的名称,因为是联表查询 可以给表起别名
// $user =Db::table('lh_user') ->join('lh_order','lh_user.uid=lh_order.uid')->select();
// print_r($user);
// 起别名 注意中间空一格空格 不能空两格空格
// $user =Db::table('lh_user u') ->join('lh_order o','u.uid = o.uid')->select();
// 另外一种起别名的方式 alias join 可以一直加
// $user =Db::table('lh_user') ->alias('u')->join('lh_order o','u.uid = o.uid')->select();
// print_r($user);
// INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
// LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
// RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
// FULL JOIN: 只要其中一个表中存在匹配,就返回行
// $user =Db::table('lh_user') ->alias('u')->leftJoin('lh_order o','u.uid = o.uid')->select();
// print_r($user);
// 使用模型。先引入 app\model\LhUser
// $LhUser = new LhUser();
// $LhUser -> lists();
$User = new User();
$User -> lists();
// $User = new User();
// $User -> one();
$User = new User();
$data = [
'name' => '小心',
'password' =>123,
'email' =>'1232@qq.com',
'register_time' =>'123456780',
];
$User -> insert($data);
}
model创建 model查询数据库 model 的配置
<?php
// 模型文件
namespace app\model;
use think\Model;
class User extends Model
{
// 设置当前模型对应的完整数据表名称
// protected $table = 'lh_user';
// 设置当前模型的数据库连接
// protected $connection = 'db_config';
// 设置废弃的字段 查询结果就看不到了
// protected $discuse = [
// 'name',
// 'phone'
// ];
// 5 、 数据类型是 php 的类型
// protected $type = [
// 'uid' => 'int',
// 'name' => 'string',
// ];
// protected $pk = 'uid';
// protected $name = 'user';
public function lists(){
// Db:: 在控制器contraller 用
// 模型里面用 自己的class名称
// 1、select 是tp 自带的方法 在每个model 模型都能直接使用 在任意表中使用
$ret = User::select();
// print_r($ret);
// 2、 默认 主键为 id 如果是uid查询报错,因此需要增加 where条件
// 可以把主键从id 改为 uid 就不用 where protected $pk = 'uid'; https://www.kancloud.cn/manual/thinkphp6_0/1037580
// 因此 是where 和find 都是可用的 返回的是对象
// 所有的链式操作都是可以用的
// $ret = LhUser::where('uid',1)->find();
// $ret = LhUser::find(1);
// print_r($ret);
// 3、结果跟 controller 用 门面 db 是一样的
// print_r($ret['name']);
// 4、学过的 数据处理都是可以转为 toArray 从对象转为 数组
// print_r($ret ->toArray());
// 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(4);
// print_r($ret);
// }
model 获取器、修改器
// 6、获取器 格式 :get +字段 +Attr 创建一个方法名
// 6.1 会接受一个参数
public function getStatusAttr($v){
// 6.2 所有的状态都会传到这个方法里面
// print_r($v);
// if ($v==0){
// $ret ='开启';
// }else{
// $ret ='关闭';
// }
// 这里要return 回去 给查询的那条语句
// return $ret;
// 直接返回 没有把v 使用
// $arr = [
// 0 => '禁用',
// 1 =>'启用',
// 2 =>'待审核',
// ];
// return $arr[$v];
}
public function insert($data){
$ret = User::create($data);
// 注意数据结果 也是要返回,model里面的任何对外的方法 ,都要用return f返回
return $ret;
}
// 7、 修改器 :格式 :get +字段 +Attr 创建一个方法名
// 7.1会接受两个传值 1个是 字段值 2全不值
public function setPasswordAttr($v,$all){
print_r($v);
print_r($all);
return md5($v);
}