关于队列序列化Model后,original字段变为新值的问题
我在监听模型的 updating
和 updated
事件,并在事件中投递了一个队列任务,是异步的。在监听器中打印模型,original
字段与 attributes
不一致,并且 changes
字段存有变更的键值,这是正常的。但是,在异步执行时,打印模型,结果 original
字段与 attributes
字段一致,changes
字段也空了。这是哪里的问题?
BaseModel 监听器#
<?php
namespace App\Observers;
use App\Models\BaseModel;
use App\Jobs\MyJob;
class BaseModelObserver
{
public function updated(BaseModel $baseModel)
{
// 这里打印模型,结果中模型属性 attributes 和 original 两个字段会有不同的值
// 并且 changes 字段会存有 attributes 和 original 中不一致的键值
// dd($baseModel)
MyJob::dispatch($baseModel);
}
}
MyJob 队列任务#
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Models\BaseModel;
class ManagerActionDetailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $model;
public function __construct(BaseModel $model)
{
$this->model = $model;
}
public function handle()
{
// 任务中打印模型,结果中模型属性 attributes 和 original 两个字段完全相同,且都是更新后的值
// changes 字段也为空了
dd($this->model);
}
}
问题:
推荐文章: