插件窝 干货文章 如何使用ThinkPHP6实现订单管理系统

如何使用ThinkPHP6实现订单管理系统

gt lt order 订单 186    来源:    2024-10-24

随着互联网的发展和电子商务的兴起,越来越多的企业开始使用在线订单管理系统,以便更好地管理订单、提高工作效率、提供更好的客户服务。本文将介绍如何使用thinkphp6框架开发一个简单的订单管理系统,涵盖了订单列表、订单详情、搜索、排序、分页等功能。

  1. 准备工作

首先,需要安装好PHP、MySQL和Composer。在安装完这些必备组件后,就可以安装ThinkPHP6。如果您不熟悉ThinkPHP6,可以阅读官方文档或者参考一些相关教程。

  1. 创建数据库和数据表

在开始开发订单管理系统之前,需要创建一个数据库。在MySQL中创建一个名为“order_system”的数据库,然后创建一个名为“orders”的数据表。

该数据表包含以下字段:

id - 订单ID

立即学习“PHP免费学习笔记(深入)”;

customer_name - 客户姓名

customer_email - 客户电子邮件

product_name - 产品名称

product_price - 产品价格

product_quantity - 产品数量

created_at - 订单创建时间

updated_at - 订单更新时间

  1. 创建模型和控制器

在ThinkPHP6中,一个模型对应一个数据表,一个控制器对应一个路由。

首先,创建一个名为“Order”的模型,它将对应“orders”数据表。

php artisan make:model Order -m

添加到灌入的代码

namespace appmodel;

use thinkModel;

class Order extends Model
{

}

然后,创建一个名为“Order”的控制器和“index”方法,用于显示订单列表视图。

php artisan make:controller Order --resource

添加到Action中、代码

public function index()
{
    $orders = Order::paginate(10);
    return view('order/index', ['orders' => $orders]);
}
  1. 创建视图

接下来,创建一个名为“index.blade.php”的视图,用于显示订单列表,它包含了搜索、排序和分页的功能。

首先,在“order”目录下创建一个名为“index.blade.php”的视图文件,然后添加以下代码:

@extends('layout')

@section('content')
    <h2>订单列表</h2>

    <form action="{{route('orders.index')}}" method="get">
        <div class="form-group">
            <input type="text" name="q" value="{{$q}}" class="form-control" placeholder="搜索">
        </div>

        <button type="submit" class="btn btn-primary">搜索</button>
    </form>

    <table class="table">
        <thead>
        <tr>
            <th>ID</th>
            <th>客户姓名</th>
            <th>客户电子邮件</th>
            <th>产品名称</th>
            <th>产品价格</th>
            <th>产品数量</th>
            <th>订单创建时间</th>
            <th></th>
        </tr>
        </thead>
        <tbody>
        @foreach ($orders as $order)
            <tr>
                <td>{{$order->id}}</td>
                <td>{{$order->customer_name}}</td>
                <td>{{$order->customer_email}}</td>
                <td>{{$order->product_name}}</td>
                <td>{{$order->product_price}}</td>
                <td>{{$order->product_quantity}}</td>
                <td>{{$order->created_at}}</td>
                <td><a href="{{route('orders.show', $order->id)}}" class="btn btn-primary">详情</a></td>
            </tr>
        @endforeach
        </tbody>
    </table>

    {{$orders->links()}}
@endsection

在该视图中,使用了Bootstrap样式,还添加了一个搜索框和一个分页控件。

  1. 创建订单详情方法和视图

然后,创建一个名为“show”方法和一个名为“show.blade.php”的视图,用于显示订单的详细信息。

在“Order”控制器中添加以下代码:

public function show($id)
{
    $order = Order::findOrFail($id);
    return view('order/show', ['order' => $order]);
}

在“order”目录中创建一个名为“show.blade.php”的视图文件,并添加以下代码:

@extends('layout')

@section('content')
    <h2>订单详情</h2>

    <table class="table">
        <tbody>
        <tr>
            <th>ID</th>
            <td>{{$order->id}}</td>
        </tr>
        <tr>
            <th>客户姓名</th>
            <td>{{$order->customer_name}}</td>
        </tr>
        <tr>
            <th>客户电子邮件</th>
            <td>{{$order->customer_email}}</td>
        </tr>
        <tr>
            <th>产品名称</th>
            <td>{{$order->product_name}}</td>
        </tr>
        <tr>
            <th>产品价格</th>
            <td>{{$order->product_price}}</td>
        </tr>
        <tr>
            <th>产品数量</th>
            <td>{{$order->product_quantity}}</td>
        </tr>
        <tr>
            <th>订单创建时间</th>
            <td>{{$order->created_at}}</td>
        </tr>
        <tr>
            <th>订单更新时间</th>
            <td>{{$order->updated_at}}</td>
        </tr>
        </tbody>
    </table>

    <a href="{{route('orders.index')}}" class="btn btn-primary">返回</a>
@endsection
  1. 添加搜索、排序和分页功能

为了实现搜索、排序和分页功能,需要对“index”方法进行修改。

在“Order”控制器的“index”方法中添加以下代码:

public function index(Request $request)
{
    $q = $request->input('q');

    $orders = Order::when($q, function ($query) use ($q) {
            $query->where('customer_name', 'like', "%$q%")
                ->orWhere('customer_email', 'like', "%$q%")
                ->orWhere('product_name', 'like', "%$q%");
        })
        ->orderBy('created_at', 'desc')
        ->paginate(10)
        ->appends(['q' => $q]);

    return view('order/index', ['orders' => $orders, 'q' => $q]);
}

在该代码中,使用了IlluminateSupportFacadesRequest类来获取搜索参数“q”,并且使用了“orderBy”方法来按创建时间倒序排序。然后,使用“paginate”方法来分页,并使用“appends”方法来将搜索参数添加到分页链接中。

  1. 测试

现在可以测试已经创建的订单管理系统了。在浏览器中输入http://localhost/orders就可以看到订单列表了。在输入关键字并点击搜索按钮后,可以看到搜索结果;点击详情按钮后可以查看订单详情。在分页链接下方,可以看到分页控件。

总结

到此,我们已经完成了使用ThinkPHP6框架创建一个简单的订单管理系统的所有步骤。本文介绍了如何创建数据表、模型和控制器,并且展示了如何使用视图文件来呈现订单数据、搜索、排序和分页。通过学习此教程,您可以更深入地理解ThinkPHP6框架,并且能够使用ThinkPHP6框架开发您自己的业务系统。