5ucms论坛

标题: fastadmin关联查询 通过另一张表的ID查到另一张表对应的名称 如管理员ID查管理员名称 [打印本页]

作者: admin    时间: 2021-5-9 10:23
标题: fastadmin关联查询 通过另一张表的ID查到另一张表对应的名称 如管理员ID查管理员名称
目前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表都查出来的,我们可以稍微做下安全防范,当然,如果后台只是自己一个人用,无所谓






作者: admin    时间: 2021-5-9 11:53
测试功能,未实现

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



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








欢迎光临 5ucms论坛 (http://bbs.5ucms.com/) Powered by Discuz! X3.2