You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
aquaculture/app/Admin/Controllers/CommentController.php

80 lines
2.6 KiB

<?php
namespace App\Admin\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Comment;
use App\Models\Product;
use App\Models\User;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
class CommentController extends Controller
{
use HasResourceActions; // 引入资源操作的特性
/**
* 显示评论列表的界面
*
* @param Content $content
* @return Content 返回构建好的内容
*/
public function index(Content $content)
{
return $content
->header('评论列表') // 设置页面标题
->description('') // 页面描述
->body($this->grid()); // 显示评论列表
}
/**
* 创建评论列表的网格构建器
*
* @return Grid 返回网格实例
*/
protected function grid()
{
$grid = new Grid(new Comment); // 创建新的网格实例,基于 Comment 模型
$grid->model()->latest(); // 按照创建时间降序排列评论
// 定义网格列
$grid->column('id'); // 评论ID
$grid->column('order_id', '订单'); // 关联的订单ID
$grid->column('product.name', '商品'); // 关联商品的名称
$grid->column('user.name', '用户'); // 关联用户的名称
$grid->column('content', '评论内容'); // 评论内容
$grid->column('score', '评分'); // 评分
$grid->column('created_at', '创建时间'); // 创建时间
$grid->column('updated_at', '修改时间'); // 修改时间
// 定义过滤器
$grid->filter(function (Grid\Filter $filter) {
$filter->disableIdFilter(); // 禁用ID过滤器
// 用户过滤器
$filter->where(function ($query) {
// 根据用户名称模糊查询用户ID
$collections = User::query()
->where('name', 'like', "%{$this->input}%")
->pluck('id');
// 根据用户ID过滤评论
$query->whereIn('user_id', $collections->all());
}, '用户');
// 商品过滤器
$filter->where(function ($query) {
// 根据商品名称模糊查询商品ID
$collections = Product::query()
->where('name', 'like', "%{$this->input}%")
->pluck('id');
// 根据商品ID过滤评论
$query->whereIn('product_id', $collections->all());
}, '商品');
});
return $grid; // 返回构建好的网格
}
}