FastAdmin关联查询及列表字段模糊搜索

FastAdmin里的关联查询继承自ThinkPHP5,借助它可以实现列表中关联表ID对应的字段显示,还可以实现更为方便的模糊搜索。

比如user_log表中,user_id字段对应是的user表中的id,我们要显示和搜索user中的username字段,就可以这么做。

UserLog控制器对应的Model文件

添加内容如下

public function user()
{
    return $this->belongsTo('\app\common\model\User', 'user_id','id', [], 'LEFT')->setEagerlyType(0);
}

UserLog控制器文件

修改index方法

list($where, $sort, $order, $offset, $limit) = $this->buildparams("user.username,id", true);

    $total = $this->model
        ->with(['user'])
        ->where($where)
        ->order($sort, $order)
        ->count();

    $list = $this->model
        ->with(['user'])
        ->where($where)
        ->order($sort, $order)
        ->limit($offset, $limit)
        ->select();

    foreach ($list as &$list_a){
        //只返回需要的字段
        $list_a->getRelation('user')->visible(['username']);
    }
    unset($list_a);

with的参数可以是字符串,表示单个关联查询,也可以是数组,表示多个关联查询。

注意点:

  1. 如果你还额外加了些统计查询,一定不要忘了把with也加上!
  2. 关联查询的命名 ,下划线和驼峰命名法都会存在不同程度的问题,可能是ThinkPHP5或FastAdmin版本的BUG,保险起见,这两种都不要用。

控制器对应的JS文件

{field: 'user.username', title: __('Username'),operate: 'LIKE'},

Leave a Comment

豫ICP备19001387号-1