alias('mqr') ->join('merchant m','m.mer_id = mqr.mer_id','right') ->field($field) ->where('is_del', 0) ->where('status', 1) ->when(isset($params['id']) && $params['id'] !== '',function($query) use ($params){ $query->where('mqr.id',(int)$params['id']); }) ->when(isset($params['mer_id']) && $params['mer_id'] !== '',function($query) use ($params){ $query->where('mqr.mer_id',(int)$params['mer_id']); }) ->when(isset($params['merchant_type']) && $params['merchant_type'] !== '',function($query) use ($params){ $query->where('m.merchant_type',(int)$params['merchant_type']); }) ->when(isset($params['keyword']) && $params['keyword'] !== '',function($query) use ($params){ if (is_numeric($params['keyword'])) { $query->whereLike('mer_name|mer_keyword|mer_phone', "%{$params['keyword']}%"); } else { $word = app()->make(VicWordService::class)->getWord($params['keyword']); $query->where(function ($query) use ($word, $params) { foreach ($word as $item) { if(mb_strlen($item) > 1) $query->whereOr('mer_name', 'LIKE', "%$item%"); } $query->whereOr('mer_name|mer_keyword', 'LIKE', "%{$params['keyword']}%"); }); } }) ->with([ 'merchant' => function($query){ $query->field('mer_id,mer_name,mer_avatar'); }, ]) ->order('m.sort DESC,m.create_time DESC'); } }