owladmin 列表展示详情并且关联其他数据方法
在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