fastadmin嵌套关联查询
thinkPHP5嵌套关联查询
笔记记录
嵌套关联查询
A -> B -> C
A 表关联B表
B表关联C表
同时把A/B/C表相关的数据展现出来
B表的model
B表关联C表
我的C表是B表的自身关联。也是一个表,所以为C表
namespace app\admin\model\machine;
class CapacityStateList extends Model
{/*** 查询关联自身的标题* @return \think\model\relation\BelongsTo*/public function pidtitle(){return $this->belongsTo('app\admin\model\machine\CapacityStateList', 'pid', 'id', [], 'LEFT')->setEagerlyType(1);}}
A表的model
A表关联B表
namespace app\admin\model;
class Machinelist extends Model
{/*** 查询关联 B 表的标题* @return \think\model\relation\BelongsTo*/public function machinestate(){return $this->belongsTo('app\admin\model\machine\CapacityStateList', 'machine_list_state_list_id', 'id', [], 'LEFT')->setEagerlyType(1);}
}
A的控制器
public function index(){$this->relationSearch=true;$this->request->filter(['strip_tags', 'trim']);if (false === $this->request->isAjax()) {return $this->view->fetch();}if ($this->request->request('keyField')) {return $this->selectpage();}$list = $this->model->with(['machinestate'=>['pidtitle']])->field('*')
// ->alias('a')
// ->field(['a.*','b.id','b.title title','b.pid','c.id id2','c.title title2','c.pid pid2'])
// ->join('machine_capacity_state_list b',' a.machine_list_state_list_id=b.id ','left')
// ->join('machine_capacity_state_list c','b.pid=c.id','left')->where("1=1")->where($where)->order($sort, $order)->paginate($limit);$result = ['total' => $list->total(), 'rows' => $list->items()];return json($result);}
原先是想 用 join 进行关联,但是发现用 with更简洁一些。
前端的显示,但是用fastadmin框架 的查询用不了,目前还没搞懂哪里的问题
{field: 'machinestate.pidtitle.title', align: 'left', title: __('title2'), operate: 'LIKE'},{field: 'machinestate.title', align: 'left', title: __('title'), operate: 'LIKE'},
先记录下来。