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

博客项目 laravel vue mysql 第五章 标签功能

前言

前面章节没看过的朋友请先从第一章开始看 。这章主要写标签相关功能。

后端

创建迁移文件

php artisan make:migration create_tags_table

编辑迁移文件

public function up()
{Schema::create('tags', function (Blueprint $table) {$table->id(); // 主键,自增ID$table->string('name')->unique(); // 标签名称,唯一,如“Laravel”$table->string('slug')->unique(); // 标签别名,URL 友好,如“laravel”$table->timestamps(); // 创建时间和更新时间});
}

运行迁移

php artisan migrate

编辑种子文件database/seeders/DatabaseSeeder.php

// 创建8个标签
use App\Models\Tag;$tags = [Tag::create(['name' => 'Laravel', 'slug' => 'laravel']),Tag::create(['name' => 'Vue.js', 'slug' => 'vue']),Tag::create(['name' => 'PHP', 'slug' => 'php']),Tag::create(['name' => 'JavaScript', 'slug' => 'javascript']),Tag::create(['name' => 'MySQL', 'slug' => 'mysql']),Tag::create(['name' => 'CSS', 'slug' => 'css']),Tag::create(['name' => 'Git', 'slug' => 'git']),Tag::create(['name' => 'Docker', 'slug' => 'docker']),
];

创建模型命令

php artisan make:model Tag

编辑文件

protected $fillable = ['name', 'slug'];

创建控制器命令

php artisan make:controller TagController

编辑控制器

<?php
namespace App\Http\Controllers;use App\Models\Tag;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;class TagController extends Controller
{
/*** 查询所有标签(分页,支持文章计数)** @param Request $request* @return JsonResponse*/public function all(Request $request): JsonResponse{$perPage = $request->input('per_page', 10);$page = $request->input('page', 1);$search = $request->input('search');$query = Tag::withCount('articles')->orderBy('created_at', 'desc');if ($search) {$query->where(function($q) use ($search) {$q->where('name', 'like', "%{$search}%")->orWhere('slug', 'like', "%{$search}%");});}$tags = $query->paginate($perPage, ['id', 'name', 'slug'], 'page', $page);return response()->json(['data' => $tags->items(),'meta' => ['current_page' => $tags->currentPage(),'per_page' => $tags->perPage(),'total' => $tags->total(),'last_page' => $tags->lastPage(),'from' => $tags->firstItem(),'to' => $tags->lastItem(),],'links' => ['first' => $tags->url(1),'last' => $tags->url($tags->lastPage()),'prev' => $tags->previousPageUrl(),'next' => $tags->nextPageUrl(),],'message' => '成功获取标签列表',], 200);}
}

前端

http://www.lryc.cn/news/587208.html

相关文章:

  • 从 Intel MacBook 迁移到 ARM MacBook 的完整指南
  • 【牛客刷题】四个选项:高考选择题方案统计(并查集+动态规划)
  • 【基于开源大模型(如deepseek)开发应用及其发展趋势的一点思考】
  • 时序预测 | Matlab代码实现VMD-TCN-GRU-MATT变分模态分解时间卷积门控循环单元多头注意力多变量时序预测
  • 【Linux系统】进程状态 | 进程优先级
  • 未来航空电子系统
  • C语言基础知识--文件读写(一)
  • 移动端设备本地部署大语言模型(LLM)
  • React强大且灵活hooks库——ahooks入门实践之状态管理类hook(state)详解
  • [Plecs基础知识系列]基于Plecs的半导体热仿真方法(实战篇)_1.建立电路模型
  • Linux修炼:开发工具
  • 《每日AI-人工智能-编程日报》--2025年7月12日
  • 使用Starrocks替换Clickhouse的理由
  • LeetCode经典题解:21、合并两个有序链表
  • Mybatis自动创建数据库表,并根据创建的表自动生成Mvc框架基础代码
  • CentOS系统下前后端项目部署攻略
  • Extended Nested Arrays for Consecutive Virtual Aperture Enhancement
  • C++——static成员
  • win10下的wsl2扩充空间
  • CUDA 编程笔记:使用 CUDA 加速矩阵乘法
  • 代码随想录算法训练营第三十二天|动态规划理论基础、LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 终极剖析HashMap:数据结构、哈希冲突与解决方案全解
  • 热点代码探测确定何时JITTest01
  • 深度学习图像分类数据集—水质量识别分类
  • 【计算机网络架构】环型架构简介
  • js入门01
  • Jvm优化高手-笔记
  • DTU数据处理
  • [spring6: @EnableSpringConfigured]-编译时织入
  • AWS云安全详解:账号管理与最佳安全实践