如果环境不是生产,你会如何跳过Laravel Scout?

时间:2017-01-17 04:19:43

标签: php laravel algolia laravel-environment laravel-scout

我有一个应用程序,我正在与Laravel一起写作。我对框架仍然相当新,并且不了解大部分内容。我使用Algolia作为Laravel's Scout的搜索引擎。在模型中添加C:\Users\"username"\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB,一个特征,记录会自动传递给Algolia,这很酷。我试图提出一个简单的陈述use Searchable,因此我们不会将我们的开发数据发送给Algolia。如果我用完Algolia的10,000个记录的黑客级别,Scout也会抛出异常。

4 个答案:

答案 0 :(得分:5)

在您当地的.env添加

SCOUT_DRIVER=null

在制作中添加

SCOUT_DRIVER=algolia

在config / scout.php中添加

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

自动将在本地忽略它,但在生产中工作。 这只是一个建议。尝试根据您的具体情况进行调整。

答案 1 :(得分:2)

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

与此方法相反的是YourModel::enableSeachSyncing(),但默认情况下启用搜索,因此通常无需使用它。

答案 2 :(得分:0)

根据Laravel 5.3 documentation

  1. dplyr::nth文件中设置环境:

    .env
  2. 确定当前环境:

    APP_ENV=local
    
  3. 检查$environment = App::environment(); 并返回true:

    $environment

答案 3 :(得分:0)

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

尝试改为:

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