5ucms论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 8359|回复: 1
打印 上一主题 下一主题

[fastadmin教程] fastadmin关联查询 通过另一张表的ID查到另一张表对应的名称 如管理员ID查管理员名称

[复制链接]

670

主题

785

帖子

8238

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8238
跳转到指定楼层
楼主
发表于 2021-5-9 10:23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前FastAdmin后台index方法支持一对一关联查询,比如我们通过管理员ID查管理员账号和昵称

------------------------------------------------
首先我们需要在当前控制器中添加以下属性

protected $relationSearch = true;
然后我们修改(修改的地方为红色,为目标表名,index方法可以从application/admin/library/traits/Backend.php里复制)控制器的index方法,代码如下:

            $list = $this->model
                ->with(["admin"])
                ->where($where)
                ->order($sort, $order)
                ->paginate($limit);
如果需要展示并有搜索功能,在上边合适位置加,注意结尾有个分号
protected $searchField=["admin_id","admin.username","admin.nickname"];

----------------------------

然后在控制器对应的model(非关联model)中添加以下代码,admin_id为当前表里记录的管理员id的字段名

public function admin()
{
    return $this->belongsTo('admin', 'admin_id')->setEagerlyType(0);
}


---------------------------


最后在/public/assets/js/backend/user/xxx.js中修改显示
{field: 'id', title: 'ID', operate: '='},类似这样合适的地方下边加



{field: ' admin_id', title: '管理员ID'},
{field: ' admin.username', title: '管理员名称'},
{field: ' admin.nickname', title: '管理员昵称'},

但此时后台关联查询,是把整个admin表都查出来的,我们可以稍微做下安全防范,当然,如果后台只是自己一个人用,无所谓





回复

使用道具 举报

670

主题

785

帖子

8238

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8238
沙发
 楼主| 发表于 2021-5-9 11:53:39 | 只看该作者
测试功能,未实现

           foreach ($list as $key to &$value){
                unset($value["admin"]);
            }



    public function admin()
    {
    return $this->belongsTo('admin', 'admin_id')->setEagerlyType(0)->bind("username,nickname");
    }



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5ucms.com

GMT+8, 2024-4-26 18:49 , Processed in 0.156250 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表