/** * @return Fluent */ protected function createFluent() { $table = $this->getTable(); $statement = $this->connection->select('%n.*', $table)->from($table); $filters = $this->mapper->getImplicitFilters($this->mapper->getEntityClass($table), new Caller($this)); if (!empty($filters)) { $funcArgs = func_get_args(); if (!$filters instanceof ImplicitFilters) { $filters = new ImplicitFilters($filters); } $targetedArgs = $filters->getTargetedArgs(); foreach ($filters->getFilters() as $filter) { $args = [$filter]; if (is_string($filter) and array_key_exists($filter, $targetedArgs)) { $args = array_merge($args, $targetedArgs[$filter]); } if (!empty($funcArgs)) { $args = array_merge($args, $funcArgs); } call_user_func_array([$statement, 'applyFilter'], $args); } } return $statement; }