Преглед изворни кода

Merge remote-tracking branch 'origin/2.0' into 2.0

jqh пре 3 година
родитељ
комит
498faf1a04
2 измењених фајлова са 41 додато и 0 уклоњено
  1. 3 0
      src/Grid/Filter.php
  2. 38 0
      src/Grid/Filter/FindInSet.php

+ 3 - 0
src/Grid/Filter.php

@@ -13,6 +13,7 @@ use Dcat\Admin\Grid\Filter\Date;
 use Dcat\Admin\Grid\Filter\Day;
 use Dcat\Admin\Grid\Filter\EndWith;
 use Dcat\Admin\Grid\Filter\Equal;
+use Dcat\Admin\Grid\Filter\FindInSet;
 use Dcat\Admin\Grid\Filter\Group;
 use Dcat\Admin\Grid\Filter\Gt;
 use Dcat\Admin\Grid\Filter\Hidden;
@@ -66,6 +67,7 @@ use Illuminate\Support\Traits\Macroable;
  * @method Hidden hidden($name, $value)
  * @method Group group($column, $builder = null, $label = '')
  * @method Newline newline()
+ * @method FindInSet findInSet($column, $label = '')
  */
 class Filter implements Renderable
 {
@@ -107,6 +109,7 @@ class Filter implements Renderable
         'year'         => Year::class,
         'hidden'       => Hidden::class,
         'newline'      => Newline::class,
+        'findInSet'    => FindInSet::class,
     ];
 
     /**

+ 38 - 0
src/Grid/Filter/FindInSet.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace Dcat\Admin\Grid\Filter;
+
+use Illuminate\Support\Arr;
+
+class FindInSet extends AbstractFilter
+{
+    /**
+     * Input value from presenter.
+     *
+     * @var mixed
+     */
+    public $input;
+
+    /**
+     * Get condition of this filter.
+     *
+     * @param  array  $inputs
+     * @return array|mixed|void
+     */
+    public function condition($inputs)
+    {
+        $value = Arr::get($inputs, $this->column);
+
+        if ($value === null) {
+            return;
+        }
+
+        $this->input = $this->value = $value;
+
+        $query = function ($query) {
+            $query->whereRaw("FIND_IN_SET(?, $this->column)", $this->value);
+        };
+
+        return $this->buildCondition($query->bindTo($this));
+    }
+}