You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何创建模型控制器读取数据库内容渲染首页

Laravel 实现首页动态内容读取及后台编辑方案

整个实现逻辑和原生PHP开发的核心流程完全一致,只是Laravel把重复的PDO连接、SQL执行、模板传参逻辑做了封装,不用重复写样板代码,具体步骤如下:

1. 创建数据表与对应模型

首先生成模型和配套的数据库迁移文件,在项目根目录执行artisan命令:

php artisan make:model HomeContent -m

命令执行完会生成两个文件:

  • 模型文件:app/Models/HomeContent.php
  • 迁移文件:database/migrations/[时间戳]_create_home_contents_table.php

先打开迁移文件编辑表结构,用来存储首页的各个动态文本块:

public function up()
{
    Schema::create('home_contents', function (Blueprint $table) {
        $table->id();
        $table->string('slug')->unique(); // 内容唯一标识,比如site_slogan、home_intro,用来快速定位对应内容
        $table->string('title'); // 内容备注名,方便后台编辑时识别
        $table->text('content'); // 存储具体的文本内容
        $table->timestamps();
    });
}

保存后执行迁移命令生成数据表:

php artisan migrate

再打开模型文件,配置可批量赋值属性,方便后续后台编辑时写入数据:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class HomeContent extends Model
{
    protected $fillable = ['slug', 'title', 'content'];
}

初始的首页默认文案可以通过Seeder填充,不用手动操作数据库,生成Seeder类写入默认内容后执行php artisan db:seed即可完成初始化。

2. 编写控制器逻辑,查询动态数据

如果你还没有首页控制器,执行命令生成:

php artisan make:controller HomeController

打开控制器文件app/Http/Controllers/HomeController.php,在首页方法中查询内容并传递给视图:

namespace App\Http\Controllers;

use App\Models\HomeContent;

class HomeController extends Controller
{
    public function index()
    {
        // 一次性取出所有首页内容,整理成slug为键、content为值的数组,方便视图调用
        $homeContents = HomeContent::query()->pluck('content', 'slug');
        
        return view('home', compact('homeContents'));
    }
}

最后确认路由文件routes/web.php中首页路由指向该控制器方法:

use App\Http\Controllers\HomeController;

Route::get('/', [HomeController::class, 'index']);

3. 替换视图中的静态文本

打开首页视图文件(默认路径resources/views/home.blade.php),把原来的硬编码静态文本替换成动态变量输出即可:

{{-- 原来的静态写法 --}}
{{-- <h1>欢迎访问我的站点</h1>
<p>这是一段固定的站点介绍文本</p> --}}

{{-- 替换为动态写法 --}}
<h1>{{ $homeContents['site_slogan'] ?? '欢迎访问我的站点' }}</h1>
<p>{{ $homeContents['home_intro'] ?? '这是默认的站点介绍文本,数据库无内容时显示' }}</p>

Blade模板的{{ }}输出语法自带XSS防护,会自动转义HTML特殊字符,比原生PHP直接echo更安全。

后续搭建管理后台的扩展方向

要实现可视化编辑首页内容,不需要从零开发完整后台系统:

  • 基础实现:新增一组后台路由,编写内容列表、编辑表单即可,表单提交时通过HomeContent::updateOrCreate()方法写入数据,不需要手写拼接SQL,框架会自动处理参数绑定,避免SQL注入
  • 快速方案:可以直接使用Laravel生态的后台构建工具,绑定HomeContent模型后即可自动生成内容增删改查界面,不需要手写表单逻辑

和原生PHP实现的对应关系

你熟悉的原生PHP流程是「建立PDO连接->手写SQL执行查询->fetch获取结果->传入模板渲染」,Laravel只是把重复步骤做了封装:

  • 数据库连接只需要在.env文件配置一次,全局复用,不需要每次请求手动new PDO实例
  • Eloquent ORM的查询方法底层就是封装的PDO预处理+执行逻辑,不需要每次手写prepare、execute、fetch的重复代码
  • 视图传参的逻辑和原生PHP中extract变量后include模板的逻辑完全一致,只是框架做了变量作用域隔离,避免变量污染

内容的提问来源于stack exchange,提问作者MoUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:54:36