当前位置: 首页 > 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.dtcms.com/a/277161.html

相关文章:

  • 前端性能优化利器:懒加载技术原理与最佳实践
  • JAVA JVM虚拟线程
  • 第三章-提示词-解锁Prompt提示词工程核销逻辑,开启高效AI交互(10/36)
  • Vue3 Diff 算法片段解析:新旧节点队列之乱序比对与更新策略
  • 7月13日星期日今日早报简报微语报早读
  • Python PyWhat详解:一款高效的数据类型识别与扫描工具
  • 把固态电池当“显卡”用:基于Li⁺迁移率的矩阵乘法加速器——电解质-权重共设计框架与FP8训练实战
  • C++--List的模拟实现
  • 深入解析Hadoop RPC:技术细节与推广应用
  • vue3 ref vs reactive值的修改
  • 自动润滑系统:从 “盲目养护“ 到智能精注的工业运维革命
  • 【芯片笔记】ADF4159
  • 详解Linux下多进程与多线程通信(一)
  • python:使用openpyxl库,实现excel表格的创建、查询(读取)、修改、插入数据
  • LVS负载均衡集群概述
  • 论文笔记:AnImitation Learning Approach for Cache Replacement
  • iOS高级开发工程师面试——架构设计
  • MailSpring
  • [Subtitle Edit] 语言文件管理.xml | 测试框架(VSTest) | 构建流程(MSBuild) | AppVeyor(CI/CD)
  • 006_测试评估与安全实践
  • 设计模式之工厂模式:对象创建的智慧之道
  • 设计模式-门面模式
  • CAU数据挖掘第四章 分类问题
  • 【论文阅读47】-微震事件的时间、空间和强度(能量)预测
  • Java设计模式之行为型模式(命令模式)
  • 单例模式:确保全局唯一实例
  • 第三章-提示词-探秘大语言基础模型:认知、分类与前沿洞察(9/36)
  • 数据结构 Map和Set
  • 代理模式:控制对象访问
  • 小车避障功能的实现(第七天)