搜索
您的当前位置:首页正文

fastadmin嵌套关联查询,thinkPHP5嵌套关联查询

来源:独旅网

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'},

先记录下来。

因篇幅问题不能全部显示,请点此查看更多更全内容

热门图文

Top