|
@@ -494,7 +494,28 @@ abstract class AbstractFilter
|
|
|
*/
|
|
|
protected function buildCondition(...$params)
|
|
|
{
|
|
|
- return [$this->query => &$params];
|
|
|
+ $column = explode('.', $this->column);
|
|
|
+
|
|
|
+ if (count($column) == 1) {
|
|
|
+ return [$this->query => &$params];
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->buildRelationQuery(...$params);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param mixed ...$params
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ protected function buildRelationQuery(...$params)
|
|
|
+ {
|
|
|
+ $relation = substr($this->column, 0, strrpos($this->column, '.'));
|
|
|
+ $params[0] = Arr::last(explode('.', $this->column));
|
|
|
+
|
|
|
+ return ['whereHas' => [$relation, function ($relation) use ($params) {
|
|
|
+ call_user_func_array([$relation, $this->query], $params);
|
|
|
+ }]];
|
|
|
}
|
|
|
|
|
|
/**
|