У меня есть laravel поисковый помощник, мой вспомогательный класс нуждается в laravel объекте запроса и другом классе, называемом QueryFilters, я хочу включить эти зависимости ВНУТРИ самого класса, поэтому мне не нужно передавать их как параметры:
Этот вспомогательный класс выглядит следующим образом:
<?php
namespace App\Helpers;
use App\Filters\QueryFilters;
use App\Filters\Filterable;
use Illuminate\Http\Request;
class Search
{
public function __construct(Request $request, QueryFilters $filters)
{
$this->request = $request;
$this->filters = $filters;
}
public static function search( $model, $relationships = [] )
{
$requestModel = $request->model;
$model = app("App\Model\{$requestModel}");
$results = $model::search($request->input('search'), '')->get();
if(!$results->isEmpty())
{
$ids = implode(',', $results->pluck('id')->toArray());
$filters->merge(['whereIn' => $ids]);
}
$results = $model::filter($filters)->with($relationships)->paginate(10);
return $results;
}
}
В моем методе контроллера, когда я создаю экземпляр класса поиска, он говорит мне, что мне нужно передать два аргумента классу, есть ли способ автоматически добавить эти зависимости ВНУТРИ моего класса, чтобы мне не нужно было каждый раз передавать их? Я думал, что включение их в конструктор моего класса автоматически разрешит их для меня, но, очевидно, это не так:
$search = new Search();
$products = $search->search('Product', ['productcategory']);