laravel 观察员不工作
laravel observers are not working
我正在尝试使用 laravel observers 来收听模型事件。问题是当我提交表单(更新或创建新记录)时,什么也没有发生。我错过了什么吗?
app.php
'providers' => [
...
App\Providers\CasesManagerServiceProvider::class,
]
CasesManagerServiceProvider.php
class CasesManagerServiceProvider extends ServiceProvider
{
public function boot( )
{
Cases::observe(CasesObserver::class);
}
public function register()
{
}
}
CasesObserver.php
class CasesObserver
{
private $cases;
public function __construct(Cases $cases){
$this->cases = $cases;
}
public function creating(Cases $case)
{
dd('creating');
}
public function saved(Cases $case)
{
dd('saved');
}
public function updating($case)
{
dd('updating');
}
public function updated($case)
{
dd('updated');
}
}
Cases.php
class Cases extends Model
{
const UPDATED_AT = 'modified_at';
protected $dispatchesEvents = [
'updating' => CasesObserver::class,
'updated' => CasesObserver::class,
'creating' => CasesObserver::class,
'saved' => CasesObserver::class,
];
}
您不需要在您的案例中使用 $dispatchesEvents。您应该尝试从模型中删除 $dispatchesEvents,并从 CasesObserver.
中删除 __constructor()
好的,我找到了答案。所有的问题都出在我添加的时候
use app\Observers\CasesObserver;
在 CasesManagerServiceProvider.php
而不是 use App\Observers\CasesObserver;
中。
是的,App
的 Camel 案例是问题所在,所以我改用 App,现在一切正常。
这似乎是对 Composer 和 Laravel 本身的误用。
您应该通知他们您添加了一些文件和配置:
自动加载文件:
composer dump
要重新配置缓存:
php artisan config:cache
希望这对你也有帮助!
对我来说,问题是在 register() method!
中注册观察员
所以当我把它放在 boot() method
中时,一切都很好!原因是服务提供商中 运行 方法的顺序 hear
希望有用
原因是您必须向模型添加 HasEvents
特征
<?php
use Illuminate\Database\Eloquent\Concerns\HasEvents;
class MyModel extends Model
{
use HasEvents;
//your code goes here
}
根据文档不可能。通过 Eloquent.
发出批量更新或删除查询时
我正在尝试使用 laravel observers 来收听模型事件。问题是当我提交表单(更新或创建新记录)时,什么也没有发生。我错过了什么吗?
app.php
'providers' => [
...
App\Providers\CasesManagerServiceProvider::class,
]
CasesManagerServiceProvider.php
class CasesManagerServiceProvider extends ServiceProvider
{
public function boot( )
{
Cases::observe(CasesObserver::class);
}
public function register()
{
}
}
CasesObserver.php
class CasesObserver
{
private $cases;
public function __construct(Cases $cases){
$this->cases = $cases;
}
public function creating(Cases $case)
{
dd('creating');
}
public function saved(Cases $case)
{
dd('saved');
}
public function updating($case)
{
dd('updating');
}
public function updated($case)
{
dd('updated');
}
}
Cases.php
class Cases extends Model
{
const UPDATED_AT = 'modified_at';
protected $dispatchesEvents = [
'updating' => CasesObserver::class,
'updated' => CasesObserver::class,
'creating' => CasesObserver::class,
'saved' => CasesObserver::class,
];
}
您不需要在您的案例中使用 $dispatchesEvents。您应该尝试从模型中删除 $dispatchesEvents,并从 CasesObserver.
中删除 __constructor()好的,我找到了答案。所有的问题都出在我添加的时候
use app\Observers\CasesObserver;
在 CasesManagerServiceProvider.php
而不是 use App\Observers\CasesObserver;
中。
是的,App
的 Camel 案例是问题所在,所以我改用 App,现在一切正常。
这似乎是对 Composer 和 Laravel 本身的误用。
您应该通知他们您添加了一些文件和配置:
自动加载文件:
composer dump
要重新配置缓存:
php artisan config:cache
希望这对你也有帮助!
对我来说,问题是在 register() method!
中注册观察员
所以当我把它放在 boot() method
中时,一切都很好!原因是服务提供商中 运行 方法的顺序 hear
希望有用
原因是您必须向模型添加 HasEvents
特征
<?php
use Illuminate\Database\Eloquent\Concerns\HasEvents;
class MyModel extends Model
{
use HasEvents;
//your code goes here
}
根据文档不可能。通过 Eloquent.
发出批量更新或删除查询时