TP5.1跨模块DB类多表查询且模块下表前缀不一致的解决方法


1,表单模块表xxx_fields_data

字段
id
module

2,自定义字段表xxx_fields

id
field_data_id
is_required
field
name
type

两张表的关系xxx_fields_data.id=xxx_fields.field_data_id

使用场景,由于不同模块的表前缀不一样,所以在A模块使用XXX模块下的这两张表,表名总会补充成 A_xxx_tableName(正确的应该只是xxx_tableName)

想得到的sql结果:

SELECT `field`,`name`,`is_required`,`type` FROM `xxx_fields_data` `fields_data` LEFT JOIN `xxx_fields` `fields` ON `fields`.`field_data_id`=`fields_data`.`id` WHERE  `module` = 'customer'  AND (  `is_required` = '1' OR `type` IN ('email','integer','telephone') )

连表查询代码如下:

 $list = Db::table('xxx_fields_data')
        ->alias('fields_data')
        ->join(['xxx_fields'=>'fields'],'fields.field_data_id=fields_data.id','left')
        ->where('module','=',$module)
        ->where(function ($query) {
            $query->where('is_required', 1)
                ->whereOr('type', 'in', $this->check_type);
            })
        ->field('field,name,is_required,type')
        ->select();

重点就在标红区域,给表设定表的别名

 

转载于:https://www.cnblogs.com/songkaixin/p/11181458.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值