我正在尝试为每个扩展我的 AbstractModel 的模型(正在扩展 Illuminate\Database\Eloquent\Model)注册一个模型观察者。
问题是我的 GenericModelObserver 无法侦听由继承 AbstractModel 的模型触发的事件。
让我展示我到目前为止所做的事情。
创建了一个服务提供者并将其放在 config/app.php 中提供者数组的最后一个位置
<?php
// app/Providers/ObserverServiceProvider.php
namespace App\Providers;
use App\Models\Quotation;
use App\Models\AbstractModel;
use App\Observers\QuotationObserver;
use App\Observers\GenericModelObserver;
use Illuminate\Support\ServiceProvider;
class ObserverServiceProvider extends ServiceProvider
{
public function boot()
{
AbstractModel::observe(GenericModelObserver::class);
Quotation::observe(QuotationObserver::class);
}
public function register()
{
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有我简单的 GenericModelObserver
<?php
// app/Observers/GenericModelObserver.php
namespace App\Observers;
use App\Models\AbstractModel;
class GenericModelObserver
{
public function saving(AbstractModel $model)
{
return $model->valid();
}
}
Run Code Online (Sandbox Code Playgroud)
抽象模型
<?php
// app/Models/AbstractModel.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class AbstractModel extends …Run Code Online (Sandbox Code Playgroud) 我想用NULL.
我只想使用密钥来做到这一点,如下所示:
$model->exampleFiller($myKeysArray, null)->save();
Run Code Online (Sandbox Code Playgroud)
我目前正在使用这个:
$model->fill([
'key1' => null,
'key2' => null,
]);
Run Code Online (Sandbox Code Playgroud)
我正在寻找更好的方法,你有吗?
ps:这不是经常使用的东西,所以我不想扩展Eloquent Model。我只需要一个巧妙的方法来设置它一次。