热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPHP5模型绑定-08

范例1:路由规则和分组支持绑定模型数据,例如:usethink\Route;Route::rule(hello:id,indexindexhello,GET,[ext

范例1:

路由规则和分组支持绑定模型数据,例如:


use think\Route;

Route::rule('hello/:id','index/index/hello','GET',[
    'ext' => 'html',
    'bind_model' => [
        'user' => '\app\index\model\User',
    ],

]);

会自动给当前路由绑定 id 为 当前路由变量值的User 模型数据(需要手动建立/var/www/think/apps/index/model/User.php和/var/www/think/apps/index/controller/Index.php)。


// 我们为think_user 表定义一个User 模型(位于apps/index/model/User.php )如下:
namespace app\index\model;

use think\Model;

class User extends Model
{
 
}
//大多情况下,我们无需为模型定义任何的属性和方法即可完成基础的操作。


namespace app\index\controller;
use think\Controller;

class Index extends Controller
{
    public function hello($id)
    {        
        $user = $this->request->user;
        return $user;
    }
}

// hello GET http://contoso.org/hello/3.html
/*

 {"id":3,"nickname":"李四","name":"Python","birthday":226338100,"email":"lisi@163.com","password":"123456","create_time":"2017-07-30 10:45:19","update_time":"2017-07-30 10:45:19","status":1}
 
 */


范例2:

use think\Route;

//可以定义模型数据的查询条件,例如:
Route::rule('hello/:name/:status','index/index/hello','GET',[
    'ext' => 'html',
    'bind_model' => [
        'user' => ['\app\index\model\User','status&name']
    ],
]);
//表示查询id 和name 的值等于当前路由变量的模型数据。


// 我们为think_user 表定义一个User 模型(位于apps/index/model/User.php )如下:
namespace app\index\model;

use think\Model;

class User extends Model
{
 
}
//大多情况下,我们无需为模型定义任何的属性和方法即可完成基础的操作。


namespace app\index\controller;
use think\Controller;

class Index extends Controller
{
    public function hello()
    {        
        $user = $this->request->user;
        return $user;
    }
}

// hello GET http://contoso.org/hello/Go/2.html   

请求实际提交的SQL语句:

SELECT * FROM `think_user` WHERE `status` = 2 AND `name` = 'Go' LIMIT 1   // 实际上数据库表里还有一条记录满足查询条件的数据:

{"id":6,"nickname":"孙七","name":"Go","birthday":226336400,"email":"sunqi@163.com","password":"123456","create_time":"2017-07-30 10:45:19","update_time":"2017-07-30 10:45:19","status":2}

/*

 {"id":5,"nickname":"赵六","name":"Go","birthday":226359300,"email":"zhaoliu@126.com","password":"123456","create_time":"2017-07-30 10:45:19","update_time":"2017-07-30 10:45:19","status":2}
 
 */


范例3:


use think\Route;

//也可以使用闭包来返回模型对象数据
Route::rule('hello/:name/:status','index/index/hello','GET',[
    'ext' => 'html',
    'bind_model' => [
        'user' => function($param){
            $model = new \app\index\model\User;
            return $model->where($param)->select();
        }
     ],
]);
//闭包函数的参数就是当前请求的URL变量信息。


namespace app\index\controller;
use think\Controller;

class Index extends Controller
{
    public function hello()
    {        
        $user = $this->request->user;
        return $user;
    }
}

// hello GET http://contoso.org/hello/Go/2.html
/*

[{"id":5,"nickname":"赵六","name":"Go","birthday":226359300,"email":"zhaoliu@126.com","password":"123456","create_time":"2017-07-30 10:45:19","update_time":"2017-07-30 10:45:19","status":2},{"id":6,"nickname":"孙七","name":"Go","birthday":226336400,"email":"sunqi@163.com","password":"123456","create_time":"2017-07-30 10:45:19","update_time":"2017-07-30 10:45:19","status":2}]
 
 */

如果范例3执行出现如下错误:


解决办法1:

return $user;  将数组类型的返回值转换成json类型的返回值,此行代码换成 return json($user); 即可解决;

解决办法2:

在config.php配置文件中修改默认的数据输出类型

     // 默认输出类型改成下面返回类型即可解决
    'default_return_type'    => 'json',


// 默认输出类型不出错的搭配方案如下:
搭配方案1    'default_return_type'    => 'html',   控制器方法内返回值必须是 return json($user);
搭配方案2    'default_return_type'    => 'json',   控制器方法内返回值必须是 return $user;



推荐阅读
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • PHP 实现多级树形结构:构建无限层级分类系统
    在众多管理系统中,如菜单、分类和部门等模块,通常需要处理层级结构。为了高效管理和展示这些层级数据,本文将介绍如何使用 PHP 实现多级树形结构,并提供代码示例以帮助开发者轻松实现无限分级。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • 一个登陆界面
    预览截图html部分123456789101112用户登入1314邮箱名称邮箱为空15密码密码为空16登 ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • Spring Boot 入门指南
    本文介绍了Spring Boot的基本概念及其在现代Java应用程序开发中的作用。Spring Boot旨在简化Spring应用的初始设置和开发过程,通过自动配置和约定优于配置的原则,帮助开发者快速构建基于Spring框架的应用。 ... [详细]
author-avatar
手机用户2702932521
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有