thinkphp通过with查询,并通过关联表进行筛选

直接添加一个where条件,然后条件里面用表名.字段即可,非常方便
需要注意的一点是在fastadmin里面,$this->auth->getGroupIds()这样获取是会获取到缓存里面的值,必须重新登录之后才可以得到最新的用户组,这个问题导致困扰了我一晚上

php 复制代码
 $usage = $this->model
                ->with(['user', 'device', 'devicetype']);
            if (in_array(3, $this->auth->getGroupIds()) || in_array(5, $this->auth->getGroupIds())) {
                //用户角色为业务员或者销售经理时,只显示所在区域的设备
                $usage->where('user.area_id', 'in', $this->auth->area_ids);
            }
            $list = $usage
                ->where($where)
                ->order($sort, $order)
                ->paginate($limit);

上面这些在后台管理系统里面是有作用的,但是前端的api接口确没起到效果,不知为何

前端api我使用join查询,添加条件

with查询的原理:其实是主查询查询出数据只是,再把查出的所有的xxx_id都拿出来,单独用in查询查询出一个列表,然后把主查询得到的列表与with得到的列表直接合并,所以with不会影响主查询,主查询该怎么查还是怎么查就行了

php 复制代码
$list = \app\common\model\Materialrecord:: alias('r')
            ->with('material')
            ->join('materials m', 'r.material_id = m.id')
            ->where('r.batch_id', $batch_id)
            ->order('r.addtime desc')
            ->select();
相关推荐
JSON_L13 小时前
Fastadmin 框架生成条形码
php·fastadmin
withoutfear18 天前
FastAdmin中如何只允许某IP段访问和只允指定IP访问
fastadmin·ip限制
ymwlchina18 天前
phpStudy 如何部署符号象客户关系管理系统(ThinkPHP 8)记录
crm·thinkphp·phpstudy·网站部署·小皮面板·客户关系管理系统
张小勇1 个月前
fastadmin try中不能使用success和error方法解决方案
fastadmin
在呢1 个月前
ThinkPHP 事务机制详解
thinkphp
withoutfear1 个月前
Fastadmin中fieldlist 二维数组某个字段需要上传单图和多图
前端·html·fastadmin
JSON_L2 个月前
Fastadmin后台使用validate进行表单验证
php·fastadmin
JSON_L2 个月前
Fastadmin关联查询报错 method not exist:think\db\Query->XXX
php·fastadmin
appleคิดถึง3 个月前
fastadmin后台订单管理页面显示出订单分类
fastadmin
宋拾壹4 个月前
fastadmin列表中查看列表,并且添加增加相应的数据
javascript·php·fastadmin