Laravel Scout toSearchableArray() 没有被调用?

Fri*_*tra 3 arrays collections toarray laravel laravel-scout

我使用 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中我正在尝试这样做:

public function search(Request $request)
{
    $results = Ingredient::search($request->q)->get()->toArray();

    return $results;
}
Run Code Online (Sandbox Code Playgroud)

但是,我仍然将我的数据作为集合返回。我正在为我的其他模型(Recipe)使用类似的设置,它确实返回了预期的结果数组。

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,再次在模型中:

public function search(Request $request)
{
    $resultsrecipes = Recipe::search($request->q)->get()->load('tags', 'ingredients', 'images');

    return $resultsrecipes;
}
Run Code Online (Sandbox Code Playgroud)

即使没有该功能,这也适用于 Recipe 模型load()。我假设toSearchableArray()我的成分模型中的函数没有被调用。我的问题是如何验证并解决这个问题?

我尝试通过php artisan queue:restart,尝试刷新和添加记录来重置队列工作人员,但似乎没有任何效果。

Fri*_*tra 5

结果php artisan scout:flush 不适用于 TNTSearch,因此我必须手动删除索引文件并运行 php artisan scout:import 来刷新新模型的可搜索设置。