Как бы вы пропустили Laravel Scout, если бы среда не производилась?

У меня есть приложение, которое я пишу на Laravel. Я все еще новичок в фреймворке и большей части не понимаю. Я использую Algolia в качестве поисковой системы с Laravel's Scout. В моделях вы добавляете use Searchable, трейт, и записи автоматически передаются в Algolia, что неплохо. Я пытаюсь сформулировать простую инструкцию if (App::environment('local'))" exit scout, просто чтобы мы не отправляли данные о наших разработках в Algolia. Scout также выдаст исключение, если у меня закончится хакерский уровень 10 000 записей Algolia.


person Chris Edwards    schedule 17.01.2017    source источник


Ответы (4)


В вашем локальном .env добавьте

SCOUT_DRIVER=null

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

SCOUT_DRIVER=algolia

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

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

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

person EddyTheDove    schedule 17.01.2017
comment
Практически идеально! просто оставьте SCOUT_DRIVER = null в локальном .env. В противном случае это не удается при проверке драйвера. Спасибо Крис - person Chris Edwards; 17.01.2017

В своей локальной среде вы можете вызвать YourModel::disableSearchSyncing(), который предотвратит отправку данных этой моделью в Algolia.

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

person Jan Petr    schedule 17.01.2017

Согласно документации Laravel 5.3:

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

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

    $environment = App::environment();
    
  3. Проверяем $environment и возвращаем true:

    if (App::environment('local')) {
        // The environment is local
    }
    if (App::environment('local', 'staging')) {
        // The environment is either local OR staging...
    }
    
person jeremykenedy    schedule 17.01.2017

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

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

public function toSearchableArray()
{
    if (! app()->isLocal()) {
        return [
            'username' => $this->username,
            'age'      => (string) $this->age,
            // and so on ...
        ];
    }
}
person Hassan Azimi    schedule 13.08.2017