1

我有一个正在用 Laravel 编写的应用程序。我对这个框架还很陌生,而且大部分内容都不了解。我使用 Algolia 作为 Laravel 的 Scout 的搜索引擎。在你添加的模型use Searchable中,一个特征,并且记录会自动传递给 Algolia,这很酷。我试图发表一个简单的声明if (App::environment('local'))" exit scout,这样我们就不会将我们的开发数据发送到 Algolia。如果我用完 Algolia 的 10,000 条记录的黑客级别,Scout 也会抛出异常。

4

4 回答 4

8

在您当地的 .env 添加

SCOUT_DRIVER=null

在生产中添加

SCOUT_DRIVER=algolia

在 config/scout.php 添加

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

它会自动在本地被忽略,但在生产中工作。这只是一个建议。尝试使其适应您的特定环境。

于 2017-01-17T04:38:57.403 回答
3

在您的本地环境中,您可以调用YourModel::disableSearchSyncing(),这将阻止此模型将数据推送到 Algolia。

该方法的反面是YourModel::enableSeachSyncing(),但默认启用搜索,因此通常不需要使用它。

于 2017-01-17T04:48:12.883 回答
0

根据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...
    }
    
于 2017-01-17T05:31:23.837 回答
0

以上解决方案均无效,我建议您在模型中检查您的toSearchableArray()方法User。如果您尝试SCOUT_DRIVER=null在本地环境中设置,那么您将面临错误,因为您的应用程序倾向于在任何环境中推送到 Algolia。

尝试这样做:

public function toSearchableArray()
{
    if (! app()->isLocal()) {
        return [
            'username' => $this->username,
            'age'      => (string) $this->age,
            // and so on ...
        ];
    }
}
于 2017-08-13T00:39:09.880 回答