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.
80 lines
2.6 KiB
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; // 返回构建好的网格
|
|
}
|
|
}
|