У меня есть приложение, которое я пишу на Laravel. Я все еще новичок в фреймворке и большей части не понимаю. Я использую Algolia в качестве поисковой системы с Laravel's Scout. В моделях вы добавляете use Searchable
, трейт, и записи автоматически передаются в Algolia, что неплохо. Я пытаюсь сформулировать простую инструкцию if (App::environment('local'))" exit scout
, просто чтобы мы не отправляли данные о наших разработках в Algolia. Scout также выдаст исключение, если у меня закончится хакерский уровень 10 000 записей Algolia.
Как бы вы пропустили Laravel Scout, если бы среда не производилась?
Ответы (4)
В вашем локальном .env добавьте
SCOUT_DRIVER=null
В производстве добавить
SCOUT_DRIVER=algolia
В config / scout.php добавьте
'driver' => env('SCOUT_DRIVER', 'null')
Автоматически он будет проигнорирован в локальном, но будет работать в продакшене. Это просто предложение. Попробуйте адаптировать его к вашему конкретному контексту.
В своей локальной среде вы можете вызвать YourModel::disableSearchSyncing()
, который предотвратит отправку данных этой моделью в Algolia.
Обратным этому методу является YourModel::enableSeachSyncing()
, но поиск включен по умолчанию, поэтому обычно в его использовании нет необходимости.
Согласно документации Laravel 5.3:
Установите среду в файле
.env
:APP_ENV=local
Определите текущую среду:
$environment = App::environment();
Проверяем
$environment
и возвращаем true:if (App::environment('local')) { // The environment is local } if (App::environment('local', 'staging')) { // The environment is either local OR staging... }
Ни одно из вышеперечисленных решений не работает. Я предлагаю вам проверить свой toSearchableArray()
метод внутри вашей User
модели. Если вы попытаетесь установить SCOUT_DRIVER=null
в локальной среде, вы столкнетесь с ошибкой, потому что ваше приложение имеет тенденцию нажимать на Algolia в любой среде.
Попробуйте сделать это вместо этого:
public function toSearchableArray()
{
if (! app()->isLocal()) {
return [
'username' => $this->username,
'age' => (string) $this->age,
// and so on ...
];
}
}