如果环境不是生产环境,您将如何跳过使用Laravel Scout?

3
我正在使用Laravel编写一款应用程序,但对该框架仍不太熟悉。我使用Laravel的Scout和Algolia作为搜索引擎。在模型中添加use Searchable(一个特性),记录会自动传递到Algolia,这很酷。我想加入一个简单的语句if (App::environment('local'))" exit scout,这样我们就不会将开发数据发送到Algolia。如果超出Algolia的黑客级别上限10000条记录,Scout也会抛出异常。
5个回答

13

在你的本地 .env 文件中添加

SCOUT_DRIVER=null

在生产中添加

SCOUT_DRIVER=algolia
在config/scout.php中添加。
'driver' => env('SCOUT_DRIVER', 'null')

在本地环境中会被自动忽略,但在生产环境中会起作用。这只是一个建议,请尝试根据您的具体情况进行调整。


1
几乎完美!只需在本地.env文件中删除"SCOUT_DRIVER=null"。否则,在检查驱动程序时会失败。谢谢,Chris - Chris Edwards
请问您能否帮忙看一下这个与Laravel搜索相关的问题:https://stackoverflow.com/questions/76485513/laravel-search-with-multiple-keywords-against-multiple-columns-with-the-search? - Istiaque Ahmed

4

1
在您的项目根目录中创建一个.env.testing文件,并简单地设置。
SCOUT_DRIVER=null

这里描述了laravel文档

0

以上的解决方案都不起作用,我建议你检查一下你的toSearchableArray()方法,在你的User模型中。如果你尝试在本地环境中设置SCOUT_DRIVER=null,那么你将会遇到一个错误,因为你的应用程序倾向于在任何环境中推送到Algolia。

试试这个方法:

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

0
根据Laravel 5.3文档的说明:
将环境设置在.env文件中:
APP_ENV=local

确定当前环境:
$environment = App::environment();

检查$environment并返回true:
if (App::environment('local')) {
    // 环境是本地的
}
if (App::environment('local', 'staging')) {
    // 环境是本地或者暂存...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接