fastadmin:关联模型,同表多次重复关联
2019-10-20 夙夜 实际技能
关联模型:
最简单的为命令生成:
//生成fa_test表的CRUD且生成关联模型category,外链为category_id,关联表主键为id
php think crud -t test -r category -k category_id -p id
当需要后期追加关联字段/关联表时,需要在控制器/js文件中添加代码,例:
控制器复制版bankend中的index方法,在其中修改with表数据来源部分:
$total = $this->model
->with(['school','teacher','subjects','student'])
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->with(['school','teacher','subjects','student'])
->where($where)
->order($sort, $order)
->limit($offset, $limit)
->select();
js部分:
将表格字段部分添加相应的需查询展示字段,关联表需在表名后添加. 加字段名,例:
{field: 'school.name', title: __('School_id')},
model部分,添加相应的关联取值方法,关联school表例:
public function school()
{
return $this->belongsTo('School', 'school_id', 'id', [], 'LEFT')->setEagerlyType(0);
}
在视图中添加相应的字段,此处不举例
关于同表多次关联:
在有原科目转科目需要两次关联同一张表的情况时,除了在model,js中添加或修改相应代码外,还需要在控制器的index方法中添加查询字段:
$total = $this->model
->with(['teacher','subjects','student','grades'])//此处关联无需重复添加
->where($where)
->order($sort, $order)
->count();
$list = $this->mode
l->with(['teacher','subjects','student','grades','students','subjectse'])//此处添加查询字段
->where($where)
->order($sort, $order)
->limit($offset, $limit)
->select();
标签: fastadmin