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
的参数可以是字符串,表示单个关联查询,也可以是数组,表示多个关联查询。
注意点:
- 如果你还额外加了些统计查询,一定不要忘了把
with
也加上! - 关联查询的命名 ,下划线和驼峰命名法都会存在不同程度的问题,可能是ThinkPHP5或FastAdmin版本的BUG,保险起见,这两种都不要用。
控制器对应的JS文件
{field: 'user.username', title: __('Username'),operate: 'LIKE'},