当前位置: 首页 > ops >正文

创建thinkphp项目并配置数据库

配置环境并引入UI

ssr模式

使用 composer 命令在指定的目录安装 Thinkphp6.x

composer create-project topthink/think tp6demo

出现Fatal error: Directive ‘track_errors’ is no longer available in PHP in Unknown on line 0说明你的php版本较高,在php.ini中track_errors=Off

修改.env 文件,配置数据库、帐号密码,以及开启调试

就用123吧

运行成功后,我们将要引入 Bootstrap 的 UI 库,

直接将 Bootstrap 包含 js 和 css 文件夹拷贝项目中 public/static 里;

配置 config/view.php,设置静态调用的模版路径;

// 模版替换输出

‘tpl_replace_string’ => [

JS’ => ‘…/static/js’,

CSS’ => ‘…/static/css’,

],

在默认控制器 Index.php 创建一个 test()方法,用于测试 UI 引入的正确性;

<?php
namespace app\controller;use app\BaseController;
use think\App;
use think\facade\View;class Index extends BaseController
{public function index(){return View::fetch('index');}}

在这里插入图片描述
没有驱动,安装

composer require topthink/think-view

创建数据库

-- 创建 student 数据库
CREATE DATABASE IF NOT EXISTS student;-- 使用 student 数据库
USE student;-- 创建 tp_user 表
CREATE TABLE IF NOT EXISTS tp_user (id MEDIUMINT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,   -- 自动编号,主键username VARCHAR(20) NOT NULL,                         -- 用户名,不能为空password CHAR(40) NOT NULL,                            -- 密码,不能为空gender CHAR(1) NOT NULL DEFAULT '男',                  -- 性别,不能为空,默认为 '男'email VARCHAR(100) NOT NULL,                           -- 邮箱,不能为空status TINYINT(1) NOT NULL,                            -- 状态,不能为空create_time DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00',  -- 创建时间,默认为 1970-01-01update_time DATETIME NOT NULL DEFAULT '1970-01-01 00:00:00',  -- 更新时间,默认为 1970-01-01INDEX (username)  -- 可以为 username 字段添加索引(如果需要)
);
-- 插入数据到 tp_user 表
INSERT INTO tp_user (username, password, gender, email, status, create_time, update_time)
VALUES('user1', 'password1', '男', 'user1@example.com', 1, NOW(), NOW()),('user2', 'password2', '女', 'user2@example.com', 0, NOW(), NOW()),('user3', 'password3', '男', 'user3@example.com', 1, NOW(), NOW()),('user4', 'password4', '女', 'user4@example.com', 1, NOW(), NOW()),('user5', 'password5', '男', 'user5@example.com', 0, NOW(), NOW()),('user6', 'password6', '男', 'user6@example.com', 1, NOW(), NOW()),('user7', 'password7', '女', 'user7@example.com', 0, NOW(), NOW()),('user8', 'password8', '男', 'user8@example.com', 1, NOW(), NOW()),('user9', 'password9', '女', 'user9@example.com', 1, NOW(), NOW()),('user10', 'password10', '男', 'user10@example.com', 0, NOW(), NOW());

使用如下命令来生成一个资源控制器:User.php;

php think make:controller User

创建 model 下的 User.php

设置路由,方便访问:

//用户模块资源路由
Route::resource('user', 'User');

获取数据,并将输入传入模版;

在User控制器中添加

return View::fetch('index', [
'list' => UserModel::select()]);

在 ThinkPHP 中,模型层提供了便捷的数据库操作方法,框架会自动生成一些常见的方法,例如 selectinsertupdatedelete,这些方法是由 ThinkPHP 的 ORM(对象关系映射)机制和 模型类 自动支持的。

ThinkPHP 使用 模型 来简化与数据库的交互。在模型中,你不需要手动编写复杂的 SQL 查询语句,框架会为你生成常见的数据库操作方法。

当你创建了一个模型类,ThinkPHP 会自动提供一系列的方法,这些方法允许你轻松地进行数据库操作。以下是几个常见的自动生成方法:

  • select():查询多条记录。
  • find():查询单条记录。
  • insert():插入数据。
  • update():更新数据。
  • delete():删除数据。
  • save():根据主键更新数据或插入数据(用于更新或新增)。

这些方法是由 模型类 中自动继承的。例如,如果你有一个 User 模型类,它将自动支持如 selectinsertupdate 等方法。

**模版部分,采用<volist>遍历显示数据即可;**{volist name="list" id="obj"}<tr>
{volist name="list" id="obj"}
<tr>
<td class="text-center">{$obj.id}</td>
<td>{$obj.username}</td>
<td class="text-center">{$obj.gender}</td>
<td>{$obj.email}</td>
<td class="text-center">
<span class="badge badge-{$obj.badge}">{$obj.status}</span>
</td>
<td class="text-center">{$obj.create_time}</td>
<td class="text-center">
<button class="btn btn-danger btn-sm">删除</button>
<button class="btn btn-warning btn-sm">修改</button>
</td>
</tr>
{/volist}

现在你已经配置好一个项目了
end

http://www.xdnf.cn/news/7556.html

相关文章:

  • 策略梯度方法(Policy Gradient Methods)
  • 物流项目第四期(运费模板列表实现)
  • 电网中窃电分析:概念、算法与应用
  • uview 2.x 下载安装配置 border=“surround“ 不生效
  • STM32+ESP8266+ONENET+微信小程序上传数据下发指令避坑指南
  • Python Selenium 使用指南
  • 第九节第二部分:常用API:Object类、包装类
  • LLM笔记(十)vLLM(1)PagedAttention论文笔记
  • ubuntu18.04安装nerfstudio
  • DataBinding深度解析:从编译原理到抖音级性能优化
  • window 显示驱动开发-准备 DMA 缓冲区
  • 关于 APK 反编译与重构工具集
  • 【HTML-3】HTML 中的水平线与换行:基础元素详解
  • React表单开发的瑞士军刀:Formik与Yup实战指南
  • [luogu12541] [APIO2025] Hack! - 交互 - 构造 - 数论 - BSGS
  • 线上jvm假死问题排查
  • 内存分页法
  • 前端小demo项目实战<京东秒杀Tab栏切换、进度条控制和成绩管理表单>
  • 代码随想录算法训练营 Day52 图论Ⅲ 岛屿问题Ⅱ 面积 孤岛 水流 造岛
  • 软考中级-软件设计师 UML图详解( 类图,对象图,用例图,序列图,通信图,状态图,活动图,构件图,部署图)
  • 【每天一个MCP】【记录向】:准备工作,创建github项目
  • 武汉副市长李湛莅临指导 珈和展会精彩亮相引《武汉电视台》深度报道 以硬核科技赋能农业强链新范式获政府媒体“双重点赞”
  • 【老马】流程引擎(Process Engine)概览
  • LLM | 论文精读 | NAACL 2025 | Clarify When Necessary:教语言模型何时该“问一句”再答!
  • HarmonyOS5云服务技术分享--认证文档问题
  • 清华大学无人机城市空间导航探索!CityNavAgent:基于层次语义规划与全局记忆的空中视觉语言导航
  • 开疆智能Profinet转ModbusTCP网关连接BORUNTE伯朗特系统配置案例
  • Django基础(一)MVT 模式与 Django 框架
  • 北斗导航 | 基于matlab的多波束技术的卫星通信系统性能仿真
  • python自学笔记5 函数