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();

重點就在標紅區域,給表設定表的別名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM