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
|
|
|
} |