使用 Laravel 5.1 + PHP 7 构建 SQL Server 待办事项应用:Myboard 实战解析
示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载导读Myboard 是 sql-server-samples 仓库中一个完整的开源待办看板to-do boardWeb 应用它演示了如何使用 PHP 7 Laravel 5.1 框架对接 Microsoft SQL Server 数据库。本文以该示例的 README 为主线结合仓库内的路由、模型、迁移与控制器源码完整讲解从环境准备、数据库配置、迁移建表到启动运行的整个过程并深入剖析其用户认证与待办 CRUD 的底层实现帮助你掌握在 Ubuntu 环境下让 Laravel 应用读写 SQL Server 的完整技术方案。Myboard 欢迎页顶部导航提供注册Register与登录Sign In入口是整套用户认证流程的起点。注册新用户页面收集姓名、邮箱、密码等信息对应源码中的用户注册与认证逻辑。项目概览Myboard 的核心功能与技术栈Myboard 是一个面向个人的待办事项管理应用围绕两个基础业务能力设计创建待办事项Create todo action items用户可以随时新增一条待办记录标记状态Mark Status用户可以切换某条待办的完成/未完成状态实现任务闭环。其技术栈在 README 中明确列出组件版本/说明PHP7操作系统Ubuntu 16.04Web 框架Laravel 5.1前端样式Twitter Bootstrap 3数据库驱动Microsoft PHP SQL Server Driver底层驱动Microsoft ODBC SQL Server Driver这个组合正是该示例的核心价值所在它证明了在 LinuxUbuntu环境下通过微软官方的 PHP SQL Server 驱动 ODBC 驱动PHP 应用可以像使用 MySQL 一样无缝读写 SQL Server / Azure SQL Database。环境准备Composer、PHP 与 SQL Server 驱动按照 README 的安装指南运行 Myboard 前需要准备以下前置组件ComposerPHP 的依赖管理器用于拉取 Laravel 框架及第三方包PHP 7应用运行时的解释器示例基于 PHP 7.0 编写PHP Connector for SQL Serverpdo_sqlsrv / sqlsrv 扩展让 PHP 直接通过 PDO 访问 SQL Server 的关键扩展Laravel 的sqlsrv连接驱动正是依赖它Apache可选的 Web 服务器用于将应用部署为常驻站点开发阶段可先用内置服务器Mcrypt 和 mbstring 扩展Laravel 5.1 的加密与多字节字符串处理依赖这两个 PHP 扩展。需要特别强调的是PHP 7 环境下必须安装与 PHP 版本匹配的微软 SQL Server 驱动否则 Laravel 在建立sqlsrv连接时会因缺少PDO_SQLSRV扩展而直接失败。驱动安装完成后可通过php -m | grep -i sqlsrv验证扩展是否加载成功。安装依赖Composer 安装 Laravel 5.1在项目根目录执行依赖安装README 中的命令假设已进入todo目录在本仓库中即 samples/development-frameworks/laravel 目录本身cd samples/development-frameworks/laravel composer install依赖清单记录在 composer.json 中require: { laravel/framework: 5.1.*, laravelcollective/html: ~5.0 }, require-dev: { fzaninotto/faker: ~1.4, mockery/mockery: 0.9.*, phpunit/phpunit: ~4.0, phpspec/phpspec: ~2.1 }其中laravel/framework锁定在 5.1.x 版本线laravelcollective/html提供表单与 HTML 生成辅助函数用于登录、注册页面的表单构建。composer install完成后脚本钩子会自动执行php artisan clear-compiled与php artisan optimize完成框架编译与优化见 composer.json。数据库配置让 Laravel 5.1 连接 SQL Server配置config/database.php这是接入 SQL Server 最核心的一步。README 给出了sqlsrv连接的配置片段而在仓库实际的 config/database.php 中可以看到完整实现sqlsrv [ driver sqlsrv, host 10.211.55.5, database env(DB_DATABASE, demotekdb), username env(DB_USERNAME, sa), password env(DB_PASSWORD, channelV1), prefix , ],各参数含义与取值说明参数说明推荐取值driver连接驱动类型固定为sqlsrvsqlsrvhostSQL Server 实例地址IP 或主机名命名实例可写host\instance替换为你的服务器地址database目标数据库名通过env(DB_DATABASE, ...)覆盖username数据库登录账号示例默认sapassword数据库登录密码通过env(DB_PASSWORD, ...)覆盖prefix表名前缀默认空字符串值得关注的是源码中的默认连接声明config/database.phpdefault env(DB_CONNECTION, sqlsrv),也就是说应用默认数据库连接就是sqlsrv即使不配置DB_CONNECTION环境变量Laravel 的所有数据库操作Eloquent、迁移、查询构造器都会走 SQL Server。生产环境建议在.env中通过DB_DATABASE、DB_USERNAME、DB_PASSWORD注入真实凭据避免在代码中硬编码密码同时可通过环境变量DB_CONNECTIONsqlsrv显式声明连接。与 MySQL 等其他连接的对比同一个配置文件里还保留了sqlite、mysql、pgsql连接见 config/database.php证明 Laravel 的多数据库抽象能力切换default即可无缝切换数据库后端而业务代码零改动——这正是 Myboard 用来演示PHP 应用对接 SQL Server时最具说服力的架构特性。数据建模与迁移三条表结构配置好连接后需要运行数据库迁移来建表php artisan migrate chmod 777 -R storagechmod 777 -R storage用于确保 Laravel 的storage目录可写框架需要写入 session、日志与编译后的视图这是 Linux 环境下的常见权限处理。Myboard 共有三张迁移表全部由 Laravel 的 Schema Builder 生成可在 database/migrations 目录查看1.users用户表2014_10_12_000000_create_users_table.phpSchema::create(users, function (Blueprint $table) { $table-increments(id); $table-string(name); $table-string(email)-unique(); $table-string(password, 60); $table-rememberToken(); $table-timestamps(); });字段包括自增主键id、用户名、唯一邮箱Laravel 迁移会为unique()自动创建唯一索引、60 位密码哈希串对应 bcrypt 输出长度、remember_token记住我会话令牌以及created_at/updated_at时间戳。2.password_resets密码重置表2014_10_12_100000_create_password_resets_table.phpSchema::create(password_resets, function (Blueprint $table) { $table-string(email)-index(); $table-string(token)-index(); $table-timestamp(created_at); });为 Laravel 内置的密码重置功能提供存储email与token均建立索引以加速查找。3.todos待办表2015_05_31_072511_create_todos_table.phpSchema::create(todos, function (Blueprint $table) { $table-increments(id); $table-string(name); $table-unsignedInteger(user_id); $table-boolean(complete)-default(false); $table-timestamps(); });name存储待办内容user_id关联用户表业务上未显式声明外键约束但模型层强制按当前登录用户过滤complete为布尔完成标志默认false。Eloquent 模型Todo 与 User数据访问全部通过 Eloquent ORM 完成两个模型位于 app 目录。Todo 模型app/Todo.php声明了表名、可批量赋值字段与属性类型转换class Todo extends Model { protected $table todos; protected $fillable [ name, user_id, ]; protected $casts [ complete boolean, ]; }$fillable白名单机制防止**批量赋值mass assignment**漏洞——只有name与user_id可以被批量写入用户无法通过伪造请求参数注入其他字段$casts将数据库中的complete列在读写时自动转换为 PHP 布尔类型保证!$todo-complete这类取反操作语义正确。User 模型app/User.php实现 Laravel 的认证契约class User extends Model implements AuthenticatableContract, CanResetPasswordContract { use Authenticatable, CanResetPassword; protected $table users; protected $fillable [name, email, password]; protected $hidden [password, remember_token]; }$hidden确保模型序列化为 JSON 时不会泄露密码哈希与记住令牌是认证场景的安全基线。路由与控制器认证 待办 CRUD 的实现剖析路由表所有路由集中在 app/Http/routes.php一览即可看清应用全貌// Home Page Route::get(/, AuthControllerhome); // Login and Logout Route::get(/login, [middleware guest, uses AuthControllergetLogin]); Route::post(/login, [middleware guest, uses AuthControllerpostLogin]); Route::get(/logout, [middleware auth, uses AuthControllerlogout]); // Registration and User Profile Route::resource(user, UserController, [except [index, show, destroy]]); // Todo Resources Route::resource(todo, TodoController, [middleware auth]);路由设计体现了清晰的访问控制分层游客专属guest中间件登录页只允许未登录用户访问已登录用户会被重定向登录专属auth中间件登出与全部待办资源路由都要求先登录未认证请求会被拦截从框架层面保证只有登录用户才能管理自己的待办资源路由user与todo使用 RESTful 资源路由一条声明即可生成 7 个标准动作index/create/store/show/edit/update/destroy的映射。认证控制器auth 认证流程 的核心是postLogin方法它使用 Laravel 的Auth::attempt完成凭据校验if (Auth::attempt([ email $request-get(email), password $request-get(password), ], $request-get(remember))) { return redirect()-intended(/todo) -with(flash_notification.message, Logged in successfully) -with(flash_notification.level, success); } return redirect()-back()-withInput() -with(flash_notification.message, Wrong email or password) -with(flash_notification.level, danger);Auth::attempt会基于users表自动完成 bcrypt 密码哈希比对成功后写入会话redirect()-intended(/todo)支持登录后回到原目标页的体验失败时withInput()回填表单数据并通过 flash 消息提示错误等级success/danger前端 Bootstrap 据此渲染不同样式的提示条。待办控制器CRUD 与状态切换TodoController 实现了待办的核心业务逻辑列表indexTodo::where(user_id, Auth::id())-paginate(7)按当前登录用户过滤每页展示 7 条直接调用 SQL Server 执行分页查询新增store先校验name必填再通过Todo::create写入name与user_id取自Auth::user()-id实现每用户独立待办列表状态切换update这是 README 所述Mark Status功能的实现核心逻辑为取反布尔值$todo Todo::findOrFail($id); $todo-complete !$todo-complete; $todo-save();得益于 Todo 模型中的$casts [complete boolean]!$todo-complete能正确完成 true/false 翻转并写回 SQL Server 的 bit 列删除destroyTodo::findOrFail($id)-delete()删除记录配合资源路由的DELETE /todo/{id}使用。运行与测试验证启动应用数据库迁移完成后即可启动开发服务器php artisan serve默认监听http://localhost:8000。访问首页后可依次体验注册用户 → 登录 → 新建待办 → 切换完成状态 → 删除待办完整流程覆盖 README 中定义的两大核心功能。生产部署时可将 Apache 的文档根目录指向public/目录。自动化测试仓库提供了基于 PHPUnit 的功能测试验证待办模块的核心行为见 tests/TodoTest.phptestSeeTodoList访问/todo应看到Todo List标题testSeeAddTodoFrom点击Add New Todo应跳转到/todo/create并显示创建表单testAddTodo填写名称并提交后应回到列表页并提示New todo created successfully且数据库todos表中出现对应记录seeInDatabase断言。测试在setUp中通过工厂创建一个用户并actingAs($user)模拟登录态见 tests/TodoTest.php结合 database/factories/ModelFactory.php 的模型工厂批量生成测试数据完整覆盖了创建 → 列表 → 入库校验的业务链路。执行测试使用vendor/bin/phpunit测试运行在sqlsrv默认连接之上进一步印证了 Laravel 的 ORM、查询构造器与迁移在 SQL Server 后端的完整可用性。小结通过 Myboard 示例可以总结出 PHP Laravel 对接 SQL Server 的完整落地路径在 Ubuntu 上安装 PHP 7 及与版本匹配的微软 PHP SQL Server 驱动pdo_sqlsrv与 ODBC 驱动用 Composer 安装 Laravel 5.1 及依赖在 config/database.php 中配置sqlsrv连接并把default设为sqlsrv使用php artisan migrate让 Laravel 的 Schema Builder 直接在 SQL Server 上建表借助 Eloquent 模型、Auth认证与资源路由完成业务开发全程无需编写任何原生 SQL。该示例的价值在于它证明了 Laravel 的数据库抽象层对 SQL Server 是一等公民——迁移、查询构造器、Eloquent ORM、分页与测试框架均可无缝工作为 PHP 开发者接入 SQL Server / Azure SQL Database 提供了可直接复用的参考实现。进一步探索完整的安装步骤与前置组件清单README数据库连接配置config/database.php待办业务实现app/Http/Controllers/TodoController.php数据模型与迁移app/Todo.php、app/User.php、database/migrations功能测试tests/TodoTest.php赞分享示例工程数据库教程后端【免费下载链接】sql-server-samplesAzure Data SQL Samples - Official Microsoft GitHub Repository containing code samples for SQL Server, Azure SQL, Azure Synapse, and Azure SQL Edge项目地址https://gitcode.com/gh_mirrors/sq/sql-server-samples点击查看免费下载相关推荐前端低代码可视化开发完全解析从零拆解一个可视化搭建引擎前端低代码可视化开发完全解析从零拆解一个可视化搭建引擎 对于正在做前端低代码、可视化开发的同学这篇文章会带你彻底拆开一个可视化搭建引擎的内部结构从画布渲染前端文档教程使用Nhost和React构建待办事项管理应用使用Nhost和React构建待办事项管理应用 前言 在现代Web开发中后端服务的搭建往往需要投入大量时间和精力。Nhost作为一个开箱即用的后端即服务 Ba后端认证鉴权数据库无服务开发工具云原生mini-vue开发实战构建一个待办事项应用mini vue开发实战构建一个待办事项应用 你是否还在为学习Vue3源码感到困惑是否想通过实际项目来深入理解Vue3的核心原理本文将带你使用mini v前端教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OpenUI:AI 实时生成 UI,Docker 3 步部署与本地开发完整指南

OpenUI:AI 实时生成 UI,Docker 3 步部署与本地开发完整指南

OpenUI:AI 实时生成 UI,Docker 3 步部署与本地开发完整指南 【免费下载链接】openui OpenUI lets you describe UI using your imagination, then see it rendered live. 项目地址: https://gitcode.com/GitHub_Trending/op/openui OpenUI 是一个…

2026/9/24 16:42:56 阅读更多 →
Nex-N2.5-mini chat_template.jinja逐行精讲:154行完整解析工具调用XML格式、多步工具链与思考块

Nex-N2.5-mini chat_template.jinja逐行精讲:154行完整解析工具调用XML格式、多步工具链与思考块

Nex-N2.5-mini chat_template.jinja逐行精讲:154行完整解析工具调用XML格式、多步工具链与思考块 【免费下载链接】Nex-N2.5-mini 项目地址: https://ai.gitcode.com/hf_mirrors/nex-agi/Nex-N2.5-mini 这篇文章对开源多模态智能体模型 Nex-N2.5-mini 的 ch…

2026/9/24 16:42:56 阅读更多 →
Java Spring WebFlux 构建即时通讯系统实战指南

Java Spring WebFlux 构建即时通讯系统实战指南

在构建实时互动应用时,WebSocket 往往是开发者绕不开的技术选型。无论是即时通讯、在线协作还是实时数据看板,它都能提供比传统 HTTP 轮询更低延迟、更高效率的双向通信能力。然而,很多团队在从概念验证走向生产环境的过程中,常常被连接不稳定、消息丢失或状态管理混乱等问…

2026/9/24 16:42:56 阅读更多 →

最新新闻

JavaEE二手图书交易平台实战:Spring+MyBatis从零搭建与避坑指南

JavaEE二手图书交易平台实战:Spring+MyBatis从零搭建与避坑指南

简介:这是一套面向高校计算机相关专业学生的JavaEE课程设计完整项目,以二手图书交易平台为主题,适合作为期末大作业、课程设计或毕业设计参考。项目采用Java语言开发,功能覆盖用户注册登录、图书发布、分类浏览、订单管理等核心业…

2026/9/24 18:09:58 阅读更多 →
基于yolov5的手骨骨龄检测实战:从目标定位到模型训练

基于yolov5的手骨骨龄检测实战:从目标定位到模型训练

简介:一套基于 Python 与 YOLOv5 的手骨骨龄检测项目,专为毕业设计、课程设计与实际项目开发打造。内容覆盖从数据处理到模型评估的完整流程:采用 CLAHE 自适应直方图均衡化技术去除手骨 X 光片中的雾感,按比例切分训练集和测试集…

2026/9/24 18:09:57 阅读更多 →
小麦田杂草YOLO检测数据集:真实场景小目标识别实战指南

小麦田杂草YOLO检测数据集:真实场景小目标识别实战指南

简介:本资源是一套面向农业智能识别与YOLO目标检测算法研究者的高质量小麦田杂草图像数据集,专为训练和验证农田场景下多类杂草检测模型而构建。数据集包含约1400张实地采集的高清小麦田图像及对应YOLO格式标注文件(共1414个txt标签&#xff…

2026/9/24 18:09:57 阅读更多 →
OpenClaw 一体化安装包,零基础搭建电脑自动化智能体

OpenClaw 一体化安装包,零基础搭建电脑自动化智能体

OpenClaw 一体化安装包|可视化部署,简化 AI 自动化环境搭建 传统 AI 自动化工具部署流程繁琐,需要手动配置各类运行环境,对于不熟悉开发的用户门槛很高。OpenClaw 整合全套依赖,提供一体化安装包,通过图形…

2026/9/24 18:09:57 阅读更多 →
JSP大学生兼职家教网毕设源码:从环境搭建到二次改造全流程

JSP大学生兼职家教网毕设源码:从环境搭建到二次改造全流程

简介:这份资源是面向Java Web初学者与课程设计者的JSP项目实战包,以「大学生兼职家教网」为主题,完整呈现家教信息发布、查询、申请与管理等核心业务场景,适合用于毕业设计、课程作业或JSP技术练手。压缩包共79个文件、约4.24MB&a…

2026/9/24 18:09:57 阅读更多 →
Java酒店管理系统源码拆解:数据库设计、JDBC分层与答辩改造指南

Java酒店管理系统源码拆解:数据库设计、JDBC分层与答辩改造指南

简介:面向JAVA学习者与毕业设计、课程设计人群的酒店管理系统完整项目资源,涵盖系统设计、编码实现与项目答辩全流程。压缩包共12个文件,大小60.73MB,内含JAVA源码压缩包、数据库SQL脚本、毕业设计论文与中期检查表、答辩PPT、3段…

2026/9/24 18:08:56 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →