Как бы вы пропустили Laravel Scout, если окружающая среда не является производственной?

У меня есть приложение, которое я пишу с Laravel. Я все еще довольно новичок со структурой и не понимаю большинство из них. Я использую Алголию в качестве поисковой системы со Скаутом Ларавела. В моделях вы добавляете use Searchable, черта, и записи автоматически передаются в Алголию, что круто. Я пытаюсь сделать простое утверждение if (App::environment('local'))" exit scoutМы просто не отправляем наши данные о разработке в Алголию. Разведчик также выдаст исключение, если я исчерпал хакерский уровень в 10000 записей в Алголии.

0

Решение

В вашем местном .env добавить

SCOUT_DRIVER=null

В производство добавить

SCOUT_DRIVER=algolia

В config / scout.php добавить

'driver' => env('SCOUT_DRIVER', 'null')

Автоматически это будет игнорироваться на местном уровне, но работать на производстве.
Это всего лишь предложение. Попробуйте адаптировать его к вашему конкретному контексту.

5

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

В вашей местной среде вы можете позвонить YourModel::disableSearchSyncing(), что помешает этой модели отправить данные в Алголию.

Обратное к этому методу YourModel::enableSeachSyncing(), но поиск включен по умолчанию, поэтому обычно его не нужно использовать.

1

В соответствии с Документация по Laravel 5.3:

  1. Установить среду в .env файл:

    APP_ENV=local
    
  2. Определите текущую среду:

    $environment = App::environment();
    
  3. Проверить $environment и верните истину:

    if (App::environment('local')) {
    // The environment is local
    }
    if (App::environment('local', 'staging')) {
    // The environment is either local OR staging...
    }
    
0

Ни одно из вышеуказанных решений не работает, я предлагаю вам проверить в toSearchableArray() метод внутри вашего User Модель. Если вы попытаетесь установить SCOUT_DRIVER=null в локальной среде вы столкнетесь с ошибкой, потому что ваше приложение имеет тенденцию продвигаться к Algolia в любой среде.

Попробуйте сделать это вместо этого:

public function toSearchableArray()
{
if (! app()->isLocal()) {
return [
'username' => $this->username,
'age'      => (string) $this->age,
// and so on ...
];
}
}
0
По вопросам рекламы [email protected]