详情页面 JOIN 查询跟列表是相似的,只需要配置 join 查询方法
#project\app\admin\controller\Category.php
namespace app\admin\controller;
use easyadmin\app\libs\PageShow;
use think\db\Query;
class Category extends \easyadmin\controller\Admin
{
/**
* 配置详情页面字段
* @param ListField $field
*/
protected function configShowField(ListField $field)
{
$field
->addField('id', 'ID', ListText::class)
# 根据 join 查询指定的别名来
->addField('c.name', '上级分类', ListText::class, [
'default' => '顶级分类'
])
->addField('name', '分类名称', ListText::class)
->addField('intro', '分类简介', ListText::class)
->addField('icon', '分类图标', ListImage::class)
->addField('time', '创建时间', ListDateTime::class)
->addField('is_del', '是否删除', ListSwitch::class);
}
/**
* 详情的查询语句
* @param Query $query
* @param $alias
*/
protected function configShowQuery(Query $query, $alias)
{
// 指定别名是 c 指端声明处 也要用 c
$query->join('category c', "c.id = {$alias}.parent_id", 'LEFT');
}
}