我有一个像这样的模型:
class Equipment extends Model
{
use HasFactory,softDeletes;
protected $table = 'equipments';
protected $fillable = ['station_id', 'parent_id', 'code', 'name', 'description', 'creator_id','deletor_id','updator_id'];
protected $softDelete = true;
protected $dates = ['deleted_at'];
public static function boot()
{
parent::boot();
//it doesn't called at all!
static::updated(function (Model $model) {
Log::error('calling refreshTree');
$model->refreshTree();
});
static::created(function (Model $model) {
$model->refreshTree();
});
static::deleted(function (Model $model) {
$model->refreshTree();
});
}
public function refreshTree(){
Log::error('refreshTree');
$equipment = DB::table('equipments')->get();
$treeData = $this->generateTree($equipment);
$jsonData = json_encode($treeData);
Redis::set(config('redis.EquipmentTree'),$jsonData);
}
private function generateTree($data, $parentId = 0) {
$tree = [];
foreach ($data as $item) {
if ($item->parent_id == $parentId) {
$children = $this->generateTree($data, $item->id);
$node = [
'id' => $item->id,
'text' => $item->name,
'editURL'=>route('dashboard.basic-info.equipments.edit',['id'=>$item->id]),
'children' => $children
];
if(count($children) <= 0)
unset($node['children']);
array_push($tree, $node);
}
}
return $tree;
}
}
当我创建模型时,创建函数被触发,但当我更新模型时,更新函数没有被触发
//Equipment::where('id',$id)->update(['parent_id'=>$recordTarget['id']]); //它没有生效
//我也尝试了这个:
$equipment = Equipment::find($id);
$equipment->parent_id = $recordTarget['id'];
$equipment->save();
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号