Laravel Scout toSearchableArray () не вызывается? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть работающая функция поиска на одной из моих моделей (Рецепт), использующая 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,, попытался очистить и добавить записи, но, похоже, ничего не работает.

1 Ответ

0 голосов
/ 04 июня 2018

Получается php artisan scout: flush не работает с TNTSearch , поэтому мне пришлось удалить индексный файл вручную и запустить php artisan scout: import, чтобы обновить параметры поиска для новой модели.

...