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