Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 是否可以为环境指定事件侦听器?_Laravel_Events - Fatal编程技术网

Laravel 是否可以为环境指定事件侦听器?

Laravel 是否可以为环境指定事件侦听器?,laravel,events,Laravel,Events,我正在制作我的第一个laravel应用程序,我有一个UpdateLoginInfo类,它更新用户的上次登录值,并增加他们登录的次数。我在auth.login期间在EventServiceProvider中侦听它,如下所示: class EventServiceProvider extends ServiceProvider { protected $listen = [ 'auth.login' => [ 'App\Events\Update

我正在制作我的第一个laravel应用程序,我有一个UpdateLoginInfo类,它更新用户的上次登录值,并增加他们登录的次数。我在auth.login期间在EventServiceProvider中侦听它,如下所示:

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        'auth.login' => [
            'App\Events\UpdateLoginInfo',
        ],
    ];

它工作得很好,但是在测试过程中,能够以不同的用户身份登录而不影响他们的数量是很好的(但是我在沙箱和生产中使用相同的数据库)。我想知道是否有一种方法可以指定环境,使侦听器只发生在生产环境中,而在我的沙箱中被忽略-这是一种合法的尝试吗(如果是,如何实现)?或者它很难看,我应该考虑为我的测试环境创建/使用另一个数据库吗?

在增加计数之前使用环境进行检查。 参考主要文件


您真的应该使用不同的数据库进行测试,将生产数据库用于生产以外的任何用途就像玩火一样,无论您多么小心,都可能会把事情搞砸。如果您需要根据生产中收集的数据进行测试,克隆数据库非常简单,只需在终端上运行
mysqldump production_database | mysql test_database
。(这假设你使用的是MySQL:)。谢谢@Bogdan-我使用的是postgres,但我觉得你是对的。。。我会调查的
if (App::environment('local')) {
    // The environment is local
}

if (App::environment('local', 'staging')) {
    // The environment is either local OR staging...
}