現(xiàn)有學(xué)生表管理:
這是顯示接口返回的數(shù)據(jù):
我想要實(shí)現(xiàn)的是:比如這個(gè)班級(jí)id,我想給轉(zhuǎn)化成班級(jí)名稱,我可能要拿id去查班級(jí)表查班級(jí)名稱。
再舉個(gè)例子:比如這個(gè)分?jǐn)?shù),我不想讓他顯示實(shí)際分?jǐn)?shù),大于等于60分顯示合格,否則顯示不合格。
如果在fastadmin中,我會(huì)重寫這個(gè)查詢方法,并進(jìn)行 foreach 判斷處理,但是在 webmanadmin中,不知道咋實(shí)現(xiàn)。
這是官方的查詢方法:
難道要這樣嗎?沒大看懂源碼,請(qǐng)大佬們指點(diǎn)一二,以解小弟之疑
webman中的doFormat中有一個(gè)user_func:afterQuery
,用這個(gè)就很方便做。
protected function doFormat($query, $format, $limit): Response
{
$methods = [
'select' => 'formatSelect',
'tree' => 'formatTree',
'table_tree' => 'formatTableTree',
'normal' => 'formatNormal',
];
$paginator = $query->paginate($limit);
$total = $paginator->total();
$items = $paginator->items();
if (method_exists($this, "afterQuery")) {
$items = call_user_func([$this, "afterQuery"], $items);
}
$format_function = $methods[$format] ?? 'formatNormal';
return call_user_func([$this, $format_function], $items, $total);
}
示例:
// 查詢后處理
protected function afterQuery($items)
{
$dictData = (array)Dict::get('endpoint_category');
$cateDic = array_column($dictData, 'name', 'value');
$ruleDic = Rule::pluck('name', 'id');
foreach ($items as $key => $item) {
$items[$key]['cid_text'] = $cateDic[$item['cid']] ?? '';
$items[$key]['rule_text'] = $ruleDic[$item['alarm_rule_id']] ?? '--';
}
return $items;
}