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();
重點就在標紅區域,給表設定表的別名