问题标签 [laravel-events]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
963 浏览

laravel - Laravel - 模型的 eloquent.saved 事件没有被触发

问题描述

我一直试图让Captainhook为模特工作,但没能做到。Captainhook 是一个 php 库,它让我们添加 URL 和 eloquent 或自定义事件,以便根据事件作为 HTTP 发布请求将事件数据发送到我们指定的那些 URL。

我不确定我在哪里做错了,但我认为 Laravel 没有触发eloquent.saved或任何其他事件。我遵循了自述文件中提到的所有确切说明。

以下是我的项目文件,可能有助于解决问题:

任何帮助是极大的赞赏。

php 工匠钩子:列表

作曲家.json

.env

配置/captain_hook.php

0 投票
1 回答
1504 浏览

laravel - 重定向在 Laravel Auth 中的 LogSuccessfulLogin 句柄中不起作用

我正在使用Laravel 5.3哪个Auth用户控制器。Listener所以基本上我为Auth事件创建了一个

并在LogSuccessfulLogin handle()基本功能上重定向用户role。但我的重定向功能不起作用。它呈现默认页面 '\home' 路由。

我正在分享我的文件:-

事件服务提供者.php

路线/web.php

这是 LogSuccessfulLogin.php

这是Auth的默认登录控制器

如果我做错了什么,请告诉我。实际上我也尝试在LogSuccessfulLogin监听器中重定向页面,return redirect()->route('login');但它也不起作用。

0 投票
1 回答
562 浏览

laravel - Laravel 事件没有触发?

我似乎无法让我的任何eloquent.saved事件处理程序运行。

我试过这个:

然后将此方法添加到\App\Models\Company

但是当我拯救一家公司时它不会运行。

我尝试创建一个观察者:

但这些事件永远不会触发:

我尝试使用侦听器类EventServiceProvider

但这也永远不会运行。

最后,我尝试将其添加到EventServiceProvider

这确实会触发一堆随机事件,但它只是为我提供模型实例——我不知道实际触发了什么事件。

发生什么了?我只想知道我什么时候Company保存的。

0 投票
1 回答
4747 浏览

php - Laravel 5.3 观察者未触发更新事件

我为我的模型创建了 Observer 来更新相关数据:

并将其添加到我的模型中:

但是更新模型时更新方法不会触发:

worker.rate_per_hour在请求实例中有值并将其添加到User模型的可填充中。

所以我的问题是,我做错了什么?

0 投票
1 回答
1152 浏览

laravel - 在两个 Laravel 应用程序之间共享事件

是否可以让一个 Laravel 应用程序监听在另一个应用程序中触发的事件?

我构建了一个 REST API 来补充现有的 Web 应用程序。它使用相同的数据库,但我已将其构建为单独的应用程序,并且某些事件会清除一些缓存的结果。目前,两个应用程序之间没有共享事件,所以尽管更新了数据库,我还是得到了缓存的结果。有没有办法让一个应用程序接收另一个应用程序触发的事件?我在文档中没有找到任何关于此的内容。

0 投票
0 回答
1074 浏览

php - InvalidArgumentException:未配置数据库 [广告商]。

我有这个奇怪的错误。在我们的应用程序中,当用户创建或更新组时,我们将该组添加到 Solr 搜索索引或通过事件更新现有数据。它曾经工作正常,但现在它已经开始抛出这个错误。

数据库.php

监听器方法在GroupEventSubscriber.php

现在每次我创建或更新一个组时,这就是我得到的堆栈跟踪。注意:我已经在`onNewGroupCreate() 和 `onNewGroupCreate()中注释掉了addGroupToIndex()方法调用onGroupUpdate()

InvalidArgumentException:未配置数据库 [广告商]。在 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:239

堆栈跟踪:

0 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(158):

Illuminate\Database\DatabaseManager->getConfig('advertiser')

1 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php(68):

Illuminate\Database\DatabaseManager->makeConnection('advertiser')

2 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3351):

Illuminate\Database\DatabaseManager->connection('advertiser')

3 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3317):

Illuminate\Database\Eloquent\Model::resolveConnection('advertiser')

4 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1861):

Illuminate\Database\Eloquent\Model->getConnection()

5 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1834):

Illuminate\Database\Eloquent\Model->newBaseQueryBuilder()

6 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1804):

Illuminate\Database\Eloquent\Model->newQueryWithoutScopes()

7 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(726):

Illuminate\Database\Eloquent\Model->newQuery()

8 /var/www/tagfi/api/vendor/jenssegers/mongodb/src/Jenssegers/Mongodb/Eloquent/HybridRelations.php(26):

Illuminate\Database\Eloquent\Model->hasOne('App\Advertiser', 'id', 'place_id')

9 /var/www/tagfi/api/app/Group.php(67): App\Group->hasOne('App\Advertiser', 'id', 'place_id')

10 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2706):

应用\组->广告商()

11 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2679):

Illuminate\Database\Eloquent\Model->getRelationshipFromMethod('advertiser')

12 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2623):

Illuminate\Database\Eloquent\Model->getRelationValue('advertiser')

13 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3466):

Illuminate\Database\Eloquent\Model->getAttribute('advertiser')

14 /var/www/tagfi/api/app/Listeners/GroupEventSubscriber.php(50): Illuminate\Database\Eloquent\Model->__get('advertiser')

15 /var/www/tagfi/api/app/Listeners/GroupEventSubscriber.php(90): App\Listeners\GroupEventSubscriber->addGroupToIndex(Object(App\Group))

16【内部函数】:App\Listeners\GroupEventSubscriber->onGroupUpdate(Object(App\Events\GroupUpdate))

17 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Events/CallQueuedHandler.php(42):

call_user_func_array(数组,数组)

18 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(73):

Illuminate\Events\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\RedisJob), Array)

19 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(203):

照亮\队列\工作\工作->火()

20 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(152):

Illuminate\Queue\Worker->process('redis', Object(Illuminate\Queue\Jobs\RedisJob), Object(Illuminate\Queue\WorkerOptions))

21 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(75):

Illuminate\Queue\Worker->runNextJob('redis', 'default', Object(Illuminate\Queue\WorkerOptions))

22 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(100):

Illuminate\Queue\Worker->daemon('redis', 'default', Object(Illuminate\Queue\WorkerOptions))

23 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(83):

Illuminate\Queue\Console\WorkCommand->runWorker('redis', 'default')

24【内部函数】:Illuminate\Queue\Console\WorkCommand->fire()

25 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Container/Container.php(508):

call_user_func_array(数组,数组)

26 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Console/Command.php(169):

照亮\容器\容器->调用(数组)

27 /var/www/tagfi/api/vendor/symfony/console/Command/Command.php(261):

Illuminate\Console\Command->执行(对象(Symfony\Component\Console\Input\ArgvInput),对象(Symfony\Component\Console\Output\ConsoleOutput))

28 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Console/Command.php(155):

Symfony\Component\Console\Command\Command->运行(对象(Symfony\Component\Console\Input\ArgvInput),对象(Symfony\Component\Console\Output\ConsoleOutput))

29 /var/www/tagfi/api/vendor/symfony/console/Application.php(817): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput),

对象(Symfony\Component\Console\Output\ConsoleOutput))

30 /var/www/tagfi/api/vendor/symfony/console/Application.php(185): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand),

对象(Symfony\Component\Console\Input\ArgvInput),对象(Symfony\Component\Console\Output\ConsoleOutput))

31 /var/www/tagfi/api/vendor/symfony/console/Application.php(116): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput),

对象(Symfony\Component\Console\Output\ConsoleOutput))

32 /var/www/tagfi/api/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121):

Symfony\Component\Console\Application->运行(对象(Symfony\Component\Console\Input\ArgvInput),对象(Symfony\Component\Console\Output\ConsoleOutput))

33 /var/www/tagfi/api/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput),

对象(Symfony\Component\Console\Output\ConsoleOutput))

34 {主要}

我知道这太长了,但我似乎无法找到导致问题的原因。

0 投票
1 回答
550 浏览

php - 了解 PHP 事件调度系统

我从来没有在 PHP 中做过任何事件驱动的事情,只有 Node.js,所以我试图了解事件调度系统在 PHP 中是如何工作的(例如Laravel 事件CakePHP 事件Symfony 事件调度器)。

这个例子在 Laravel 文档中:

由于在 Apache 上运行的 PHP 脚本的生命周期基本上就是请求的生命周期,这是否意味着每个请求都会实例化所有事件侦听器?

因此,如果我的应用程序中有 120 个侦听器(即在此$listen属性中列出),是否每次访问页面时都会实例化所有 120 个侦听器?还是仅在调度适当的事件时才实例化侦听器对象?

当在请求的整个持续时间内甚至可能没有触发单个事件时,用每个请求实例化侦听器似乎效率很低。

这是我什至应该关心的事情吗?

0 投票
1 回答
747 浏览

laravel - 在 Laravel 5.4 中添加事件监听器给了我 500 错误

因此,在创建新的 API 令牌时尝试构建通知,它会通知我。我在文档中也添加了它所说的事件和侦听器,但是当我尝试创建新令牌时,它现在给了我一个 500 错误。当我注释掉侦听器时,令牌创建位起作用 - 只有当我重新添加侦听器时,它才会再次出现 500 个错误。令牌本身存储在数据库中,但令牌的“名称”在数据库中为空白。但是在前端它只是出错了 - 当我查看控制台时,我收到 500 错误:

事件和监听器:

0 投票
1 回答
1739 浏览

laravel - 仅在模型属性/列更新时处理事件 - Laravel 观察者

我在这里处理模型的两个事件,更新和更新,如您在下面的代码中所见。我担心的是,只有当teacherId已更改时,我才想在更新的事件中执行一些任务,因此我想检查更新事件中的值并使用类属性来了解它是否已更改,但该标志假设其定义的值,总是返回 false。

这甚至是正确的方法吗?如果不是我做错了什么?

0 投票
1 回答
98 浏览

php - 使用 Event 捕获受查询影响的行

我正在尝试编写一个事件来显示查询影响了多少行。

我找到了 Illuminate\Database\Events\QueryExecuted 事件。我已经为事件添加了一个监听器并在事件服务提供者中注册了它:

在我的处理方法中,我可以看到正在运行的查询:

但是,我找不到查看查询运行更新/删除了多少行的方法。

我会很感激任何建议。