用于审批的联表查询语句
xuexi 2025-08-13 15:25:33 发表在:PHP 查看数:22
 protected function grid()
    {
        $grid = new Grid(new Shenpi);
       //查询待审批工单
      //  $grid->model()->where('shenpirenid', \Auth::user()->id ) ->where('zt', '待处理')->orderBy('id', 'desc');
      // 联表并选择需要的字段

  $grid->model()
    // 主表为 cb_shenpi
    ->from('cb_shenpi')
    // 关联工单表 cb_faqi
    ->join('cb_faqi as g', 'cb_shenpi.gongdan_id', '=', 'g.id')
    // 审批人ID条件(主表条件)
    ->where('cb_shenpi.shenpirenid', \Auth::user()->id)
    // 工单状态条件(关联表条件)
    ->where('g.zt', '审批中')
    // 按主表ID排序
    ->orderBy('cb_shenpi.id', 'desc')
    // 选择需要的字段(主表和关联表)
    ->select('cb_shenpi.*', 'g.*', 'cb_shenpi.created_at as shenpi_time','g.title as title','g.sqms as sqms');
通过 from('cb_shenpi') 明确指定主表为流程表
关联条件改为 cb_shenpi.gongdan_id = cb_faqi.id(假设工单表主键为 id)
原 cb_faqi.zt 条件保持不变,但需要通过关联表别名 g 访问
排序改为按主表 cb_shenpi 的 id 字段
选择字段时同时包含主表和关联表的需要字段
如果需要在表格中展示工单表的字段,需要通过关联表别名访问,例如 g.字段名。
如果运行时出现字段冲突(例如两个表都有 id 字段),建议在 select 中为冲突字段指定别名,例如:
->select(
    'cb_shenpi.id as shenpi_id', 
    'g.id as gongdan_id',
    'cb_shenpi.*', 
    'g.*', 
    'cb_shenpi.spsj as shenpi_time'
)

// 在表格中展示关联表字段




// 在表格中展示关联表字段
          $grid->column('id', __('ID'))->sortable();
          $grid->column('shenpi_time', '工单发起时间');
          $grid->column('title', '工单名称');

          $grid->column('sqms', __('工单描述'));
          $grid->column('user_id', __('申请人'));
          $grid->column('zt', __('状态'));

        $grid->column('a', __('配置流程节点'))->display(function(){
         return sprintf(
        '<a href="liucheng?leixing_id=%d&leixing_name=%s" style="color:blue">审批节点</a>',
        $this->id,
         urlencode($this->name)
        );
        });
    //导出结束

        return $grid;
    }
最近访问时间:2025-08-15 17:37:11
知识库:372条鸣谢:TAY  备案号:蜀ICP备2024090044号-1