功能在模型内部更新时没有被触发
P粉752826008
P粉752826008 2023-08-08 16:31:55
[PHP讨论组]

我有一个像这样的模型:

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();


P粉752826008
P粉752826008

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号