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();
相关推荐
vipxieliang1 天前
ThinkPHP 8.0 注解路由实战:PHP 8 原生 Attribute 方案
php·thinkphp
vipxieliang3 天前
ThinkPHP 8.0 路由完全重写:新写法与迁移适配指南
php·thinkphp
vipxieliang13 天前
ThinkPHP MVC 模式入门:从控制器到视图的完整实践
后端·php·thinkphp
2301_322414280420 天前
基于web的校园失物招领管理系统59695-计算机毕设 原创(免费领源码+部署教程+开发环境)
mysql·nginx·php·apache·thinkphp·phpstudy·wampserver
VX_bysjlw98520 天前
基于PHP的论坛系统设计与实现 35136-计算机毕设原创(免费领源码+带部署教程)
开发语言·php·apache·laravel·thinkphp·phpstudy·wampserver
toooooop821 天前
FastAdmin(ThinkPHP 5.0)单元测试实践:从零到跑通
单元测试·fastadmin
toooooop822 天前
FastAdmin Hook 机制与插件错误透传:`$result` 之外的信封
开发语言·fastadmin
JSON_L1 个月前
Fastadmin 框架生成条形码
php·fastadmin
withoutfear2 个月前
FastAdmin中如何只允许某IP段访问和只允指定IP访问
fastadmin·ip限制
ymwlchina2 个月前
phpStudy 如何部署符号象客户关系管理系统(ThinkPHP 8)记录
crm·thinkphp·phpstudy·网站部署·小皮面板·客户关系管理系统