У меня есть работающая функция поиска на одной из моих моделей (Рецепт), использующая Laravel Scout и TNTSearch: teamtnt / laravel-scout-tntsearch-driver .
Я хочу добавить то же самоефункциональность поиска для другой модели (ингредиент).Я пытаюсь вернуть результаты поиска в виде массива с помощью toSearchableArray().
. Для тестирования я сделал в своей модели следующее:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Ingredient extends Model
{
use Searchable;
public $asYouType = true;
public function recipes()
{
return $this->belongsToMany('App\Recipe');
}
public function toSearchableArray()
{
$array = $this->toArray();
return $array;
}
}
В своем контроллере я пытаюсь это сделать:
public function search(Request $request)
{
$results = Ingredient::search($request->q)->get()->toArray();
return $results;
}
Однако я все еще возвращаю свои данные в виде коллекции.Я использую аналогичную настройку для моей другой модели (рецепт), которая возвращает массив результатов, как и ожидалось.
namespace App;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Recipe extends Model
{
use Searchable;
public $asYouType = true;
public function ingredients()
{
return $this->belongsToMany('App\Ingredient');
}
public function toSearchableArray()
{
$array = $this->toArray();
return $array;
}
}
Затем снова в модели:
public function search(Request $request)
{
$resultsrecipes = Recipe::search($request->q)->get()->load('tags', 'ingredients', 'images');
return $resultsrecipes;
}
Это работает для модели рецепта, даже без функции load()
.Я предполагаю, что функция toSearchableArray()
в моей модели Ingredient не вызывается.У меня вопрос, как я могу проверить и исправить это?
Я попытался сбросить работника очереди с помощью php artisan queue:restart,
, попытался очистить и добавить записи, но, похоже, ничего не работает.