问题标签 [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.
laravel - Laravel - 模型的 eloquent.saved 事件没有被触发
问题描述
我一直试图让Captainhook为模特工作,但没能做到。Captainhook 是一个 php 库,它让我们添加 URL 和 eloquent 或自定义事件,以便根据事件作为 HTTP 发布请求将事件数据发送到我们指定的那些 URL。
我不确定我在哪里做错了,但我认为 Laravel 没有触发eloquent.saved
或任何其他事件。我遵循了自述文件中提到的所有确切说明。
以下是我的项目文件,可能有助于解决问题:
任何帮助是极大的赞赏。
php 工匠钩子:列表
作曲家.json
.env
配置/captain_hook.php
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');
但它也不起作用。
laravel - Laravel 事件没有触发?
我似乎无法让我的任何eloquent.saved
事件处理程序运行。
我试过这个:
然后将此方法添加到\App\Models\Company
:
但是当我拯救一家公司时它不会运行。
我尝试创建一个观察者:
但这些事件永远不会触发:
我尝试使用侦听器类EventServiceProvider
:
但这也永远不会运行。
最后,我尝试将其添加到EventServiceProvider
这确实会触发一堆随机事件,但它只是为我提供模型实例——我不知道实际触发了什么事件。
发生什么了?我只想知道我什么时候Company
保存的。
php - Laravel 5.3 观察者未触发更新事件
我为我的模型创建了 Observer 来更新相关数据:
并将其添加到我的模型中:
但是更新模型时更新方法不会触发:
我worker.rate_per_hour
在请求实例中有值并将其添加到User
模型的可填充中。
所以我的问题是,我做错了什么?
laravel - 在两个 Laravel 应用程序之间共享事件
是否可以让一个 Laravel 应用程序监听在另一个应用程序中触发的事件?
我构建了一个 REST API 来补充现有的 Web 应用程序。它使用相同的数据库,但我已将其构建为单独的应用程序,并且某些事件会清除一些缓存的结果。目前,两个应用程序之间没有共享事件,所以尽管更新了数据库,我还是得到了缓存的结果。有没有办法让一个应用程序接收另一个应用程序触发的事件?我在文档中没有找到任何关于此的内容。
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 {主要}
我知道这太长了,但我似乎无法找到导致问题的原因。
php - 了解 PHP 事件调度系统
我从来没有在 PHP 中做过任何事件驱动的事情,只有 Node.js,所以我试图了解事件调度系统在 PHP 中是如何工作的(例如Laravel 事件、CakePHP 事件和Symfony 事件调度器)。
这个例子在 Laravel 文档中:
由于在 Apache 上运行的 PHP 脚本的生命周期基本上就是请求的生命周期,这是否意味着每个请求都会实例化所有事件侦听器?
因此,如果我的应用程序中有 120 个侦听器(即在此$listen
属性中列出),是否每次访问页面时都会实例化所有 120 个侦听器?还是仅在调度适当的事件时才实例化侦听器对象?
当在请求的整个持续时间内甚至可能没有触发单个事件时,用每个请求实例化侦听器似乎效率很低。
这是我什至应该关心的事情吗?
laravel - 在 Laravel 5.4 中添加事件监听器给了我 500 错误
因此,在创建新的 API 令牌时尝试构建通知,它会通知我。我在文档中也添加了它所说的事件和侦听器,但是当我尝试创建新令牌时,它现在给了我一个 500 错误。当我注释掉侦听器时,令牌创建位起作用 - 只有当我重新添加侦听器时,它才会再次出现 500 个错误。令牌本身存储在数据库中,但令牌的“名称”在数据库中为空白。但是在前端它只是出错了 - 当我查看控制台时,我收到 500 错误:
事件和监听器:
laravel - 仅在模型属性/列更新时处理事件 - Laravel 观察者
我在这里处理模型的两个事件,更新和更新,如您在下面的代码中所见。我担心的是,只有当teacherId已更改时,我才想在更新的事件中执行一些任务,因此我想检查更新事件中的值并使用类属性来了解它是否已更改,但该标志假设其定义的值,总是返回 false。
这甚至是正确的方法吗?如果不是我做错了什么?
php - 使用 Event 捕获受查询影响的行
我正在尝试编写一个事件来显示查询影响了多少行。
我找到了 Illuminate\Database\Events\QueryExecuted 事件。我已经为事件添加了一个监听器并在事件服务提供者中注册了它:
在我的处理方法中,我可以看到正在运行的查询:
但是,我找不到查看查询运行更新/删除了多少行的方法。
我会很感激任何建议。