TP6 关联查询问题

 TP6模型一对多关联查询

model类关联信息

class Order extends Base
{

    public function items()
    {
        return $this->hasMany('OrderInfo', 'order_id', 'id');
    }

    public function userInfo() { 
        return $this->belongsTo('User', 'uid', 'id'); } 
    }
}

关联查询 Demo

class Order extends Base
{
    public function index()
    {
        // 获取表格请求数据
        [$page, $limit, $map] = $this->buildTableParams();
        /**
           * $map返回信息如下
           * $map = [
           *   ['nick_name', 'like', "%张三%"],
           *   ['order_no', '=', 'JD10003210123']
           * ];
           *
           */
         // 实例化model
        $model = new \app\api\model\Order();
        // 组装关联查询的查询条件 
        $where[] = $map[0][0] == 'nick_name' ? $map[0] : [];
        // 进行查询操作
        $data = $model->hasWhere('userInfo', $where)->where($map)->where('is_del', -1)->with(['userInfo', 'items'])->page($page, $limit)->order($this->sort)->select();

        return json_data($data);
  
    }

}

 

tips:需要注意的是,关联查询条件,hasWhere方法必须先调用!

 

posted @ 2022-04-11 14:10  雪后西溏  阅读(790)  评论(0)    收藏  举报