owladmin 列表展示详情并且关联其他数据方法
xuexi 2026-04-28 14:43:01 发表在:PHP 查看数:14

在namespace App\Services;中要加代码,比较繁琐,不仅仅是模型中,要重写list

public function list()
{
    // 1. 使用 OwlAdmin 标准查询 + 加载你需要的关联表
    $query = $this->listQuery()->with('zhuonamegl', 'dingdangl');

    // 2. 清除原有排序,并设置你的排序规则(id 倒序/正序,二选一)
    // 你原来第一个方法是 desc,第二个是 asc,我默认用 desc,需要改就换成 asc
    $query->reorder()->orderBy('id', 'desc');

    // 3. 分页参数(兼容前端传参,默认20条)
    $perPage = request()->input('perPage', 20);

    // 4. 执行查询
    $list = $query->paginate($perPage);

    // 5. 格式化行数据(OwlAdmin 标准逻辑)
    $items = $this->formatRows($list->items());
    $total = $list->total();

    // 6. 标准返回格式
    return compact('items', 'total');
}

//模型中药关联一对多,一个订单对应多个菜单
 public function dingdangl(){
       return $this->hasMany(OrderItem::class,'order_id','id'); // 他的表 他的id  我的id
      }
//列表中的详细里面调用
public function detail()
{
    return $this->baseDetail()
        // 🔥 关键:预加载关联的 dingdangl 表数据
        ->with('dingdangl')
        ->body([
            amis()->TextControl('id', 'ID')->static(),
            amis()->TextControl('table_number', '桌号')->static(),
            // 🔥 子表菜品:用表格展示(一对多)
            amis()->TableControl('dingdangl', '菜品详情')
                ->columns([
                    amis()->TableColumn('food_name', '菜名'),
                    // 可扩展子表其他字段:
                    amis()->TableColumn('price', '单价'),
                    amis()->TableColumn('quantity', '数量'),
                ])
                ->static(),

            amis()->TextControl('person_count', '就餐人数')->static(),
            amis()->TextControl('total_amount', '总金额')->static(),
            amis()->TextControl('discount_ratio', '折扣比例')->static(),
            amis()->TextControl('reduce_money', '优惠金额')->static(),
            amis()->TextControl('final_amount', '实付金额')->static(),
            amis()->TextControl('remark', '备注')->static(),
            amis()->TextControl('status', '订单状态')->static(),
            amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
            amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
        ]);
}
最近访问时间:2026-04-29 19:06:25
知识库:455条鸣谢:TAY  备案号:蜀ICP备2024090044号