|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* Created by PhpStorm. |
|
4
|
|
|
* User: work |
|
5
|
|
|
* Date: 2018/12/15 |
|
6
|
|
|
* Time: 10:26 |
|
7
|
|
|
*/ |
|
8
|
|
|
|
|
9
|
|
|
namespace Insenseanalytics\LaravelNovaPermission; |
|
10
|
|
|
|
|
11
|
|
|
|
|
12
|
|
|
trait PermissionSearchTranslationTrait { |
|
13
|
|
|
|
|
14
|
|
|
use TranslationHandelTrait; |
|
15
|
|
|
|
|
16
|
|
|
/** |
|
17
|
|
|
* Override the applyFilters method,title field translation |
|
18
|
|
|
*/ |
|
19
|
|
|
public function title() { |
|
20
|
|
|
|
|
21
|
|
|
return __('laravel-nova-permission::permissions.display_names.'.$this->name); |
|
|
|
|
|
|
22
|
|
|
} |
|
23
|
|
|
|
|
24
|
|
|
/** |
|
25
|
|
|
* Rewrite the applySearch method to apply translation field search |
|
26
|
|
|
* |
|
27
|
|
|
* @param \Illuminate\Database\Eloquent\Builder $query |
|
28
|
|
|
* @param string $search |
|
29
|
|
|
* @return \Illuminate\Database\Eloquent\Builder |
|
30
|
|
|
*/ |
|
31
|
|
|
protected static function applySearch($query, $search) |
|
32
|
|
|
{ |
|
33
|
|
|
return $query->where(function ($query) use ($search) { |
|
34
|
|
|
if (is_numeric($search) && in_array($query->getModel()->getKeyType(), ['int', 'integer'])) { |
|
35
|
|
|
$query->orWhere($query->getModel()->getQualifiedKeyName(), $search); |
|
36
|
|
|
} |
|
37
|
|
|
|
|
38
|
|
|
$model = $query->getModel(); |
|
39
|
|
|
|
|
40
|
|
|
$connectionType = $query->getModel()->getConnection()->getDriverName(); |
|
41
|
|
|
|
|
42
|
|
|
$likeOperator = $connectionType == 'pgsql' ? 'ilike' : 'like'; |
|
43
|
|
|
|
|
44
|
|
|
$trans_search = array_keys(preg_grep("/$search/",array_dot(__('laravel-nova-permission::permissions.display_names')))); |
|
|
|
|
|
|
45
|
|
|
|
|
46
|
|
|
foreach (static::searchableColumns() as $column) { |
|
47
|
|
|
$qualify_column = $model->qualifyColumn($column); |
|
48
|
|
|
foreach ($trans_search as $t_search){ |
|
49
|
|
|
$query->orWhere($qualify_column, $likeOperator, '%'.$t_search.'%'); |
|
50
|
|
|
} |
|
51
|
|
|
$query->orWhere($qualify_column, $likeOperator, '%'.$search.'%'); |
|
52
|
|
|
} |
|
53
|
|
|
}); |
|
54
|
|
|
} |
|
55
|
|
|
} |