У меня есть приложение, которое я пишу с Laravel. Я все еще довольно новичок со структурой и не понимаю большинство из них. Я использую Алголию в качестве поисковой системы со Скаутом Ларавела. В моделях вы добавляете use Searchable
, черта, и записи автоматически передаются в Алголию, что круто. Я пытаюсь сделать простое утверждение if (App::environment('local'))" exit scout
Мы просто не отправляем наши данные о разработке в Алголию. Разведчик также выдаст исключение, если я исчерпал хакерский уровень в 10000 записей в Алголии.
В вашем местном .env добавить
SCOUT_DRIVER=null
В производство добавить
SCOUT_DRIVER=algolia
В config / scout.php добавить
'driver' => env('SCOUT_DRIVER', 'null')
Автоматически это будет игнорироваться на местном уровне, но работать на производстве.
Это всего лишь предложение. Попробуйте адаптировать его к вашему конкретному контексту.
В вашей местной среде вы можете позвонить YourModel::disableSearchSyncing()
, что помешает этой модели отправить данные в Алголию.
Обратное к этому методу YourModel::enableSeachSyncing()
, но поиск включен по умолчанию, поэтому обычно его не нужно использовать.
В соответствии с Документация по 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...
}
Ни одно из вышеуказанных решений не работает, я предлагаю вам проверить в toSearchableArray()
метод внутри вашего User
Модель. Если вы попытаетесь установить SCOUT_DRIVER=null
в локальной среде вы столкнетесь с ошибкой, потому что ваше приложение имеет тенденцию продвигаться к Algolia в любой среде.
Попробуйте сделать это вместо этого:
public function toSearchableArray()
{
if (! app()->isLocal()) {
return [
'username' => $this->username,
'age' => (string) $this->age,
// and so on ...
];
}
}