toSearchableArray() не вызывается?

У меня есть работающая функция поиска на одной из моих моделей (рецепт) с использованием Laravel Scout и TNTSearch: https://github.com/teamtnt/laravel-scout-tntsearch-driver

Я хочу добавить одну и ту же функцию поиска в другую модель (Ингредиент)

Я пытаюсь вернуть результаты поиска в виде массива с помощью toSearchableArray(), поэтому для тестирования я сделал это в своей модели:

<?php

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;
    }

Тем не менее, я все еще возвращаю свои данные как коллекцию. Я использую аналогичную настройку для моей другой модели (Рецепт), которая возвращает массив результатов, как и ожидалось:

<?php

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 ответ

Решение

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

Другие вопросы по тегам