BadMethodCallException Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: searchable ()

Я пытаюсь импортировать некоторые существующие записи в Алголию. сейчас использую Laravel 5.5 а также scout 3.0.0 с algolia-php-sdk. когда я выполню php artisan scout:import "App\Listings" -v, он бросает следующее исключение

 [BadMethodCallException]
Call to undefined method Illuminate\Database\Query\Builder::searchable()Exception trace:
() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2457
Illuminate\Database\Query\Builder->__call() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1273
Illuminate\Database\Eloquent\Builder->__call() at /home/vagrant/Code/vendor/laravel/scout/src/Searchable.php:102
App\Listings::makeAllSearchable() at /home/vagrant/Code/vendor/laravel/scout/src/Console/ImportCommand.php:43
Laravel\Scout\Console\ImportCommand->handle() at n/a:n/a
call_user_func_array() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:29
Illuminate\Container\BoundMethod::Illuminate\Container\{closure}() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:87
Illuminate\Container\BoundMethod::callBoundMethod() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:31
Illuminate\Container\BoundMethod::call() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Container/Container.php:549
Illuminate\Container\Container->call() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php:180
Illuminate\Console\Command->execute() at /home/vagrant/Code/vendor/symfony/console/Command/Command.php:262
Symfony\Component\Console\Command\Command->run() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Command.php:167
Illuminate\Console\Command->run() at /home/vagrant/Code/vendor/symfony/console/Application.php:888
Symfony\Component\Console\Application->doRunCommand() at /home/vagrant/Code/vendor/symfony/console/Application.php:224
Symfony\Component\Console\Application->doRun() at /home/vagrant/Code/vendor/symfony/console/Application.php:125
Symfony\Component\Console\Application->run() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Console/Application.php:88
Illuminate\Console\Application->run() at /home/vagrant/Code/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:121
Illuminate\Foundation\Console\Kernel->handle() at /home/vagrant/Code/artisan:35
`

Я включил Searchable черта в модели также toSearchableArray() метод для настройки вставляемой записи.

У меня есть другая модель под названием Store, и я могу без проблем импортировать эту модель в Алголию. Я прошел эта ссылка. но обе мои модели расширяют один и тот же класс базовой модели, поэтому приведенная выше ссылка мне тоже не помогла.

Любые намеки на движение вперед будет принята с благодарностью.

РЕДАКТИРОВАТЬ
Пример кода

namespace App;

use App\Services\Search\Builders\ListingRecordBuilder;

use Laravel\Scout\Searchable;
.
.
.

class Listings extends BaseModel
{
use Searchable;
.
.
.
public function searchableAs()
{
return 'local_listings_new';
}

public function toSearchableArray()
{
$recordBuilder = new ListingRecordBuilder($this);

return $recordBuilder->buildRecord();
}
}

0

Решение

Я понял это сам. Модель содержала $indices массив / свойство, которое используется для обозначения индекса Алголии, куда вставляется запись. в то же время он содержит searchableAs() метод, который выполняет ту же задачу определения индекса Алголии. и это $indices Массив заполняется через конструктор, поэтому на первый взгляд я не смог выявить виновника.

Так просто удаляя $indices массив и код, где конструктор выполняет инициализацию $indices работал на меня. Но до сих пор неизвестно, почему скаут бросает Call to undefined method::Searchable() исключение

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]