0%

laravel orm 使用多个查询参数在关联关系中用FIND_IN_SET查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

搜索参数:
$filters['customs_document_remarks']比如:['T1','ATB', '..']

数据库:
mysql customs_document_remarks 字段存储例如: ATC,ATB,Unbekannt,T1

查询需求:
filters里的任意值匹配字段逗号隔开的任意值,即返回结果

可以在whereHas里做in_items的whereRaw查询。

// 海关文件备注
if (isset($filters['customs_document_remarks']) && $filters['customs_document_remarks']) {
$data->whereHas('in_items', function ($query) use ($filters) {
$sql = '';
foreach ($filters['customs_document_remarks'] as $customs_document_remarks) {
if ($sql) {
$sql .= ' OR ';
}
$sql .= 'FIND_IN_SET("' . $customs_document_remarks . '", customs_document_remarks)';
}
$query->whereRaw($sql);
});
}

欢迎关注我的其它发布渠道