Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php plank/laravel可调解-删除可调解实体时,删除与分离介质_Php_Laravel - Fatal编程技术网

Php plank/laravel可调解-删除可调解实体时,删除与分离介质

Php plank/laravel可调解-删除可调解实体时,删除与分离介质,php,laravel,Php,Laravel,当删除具有Mediabletrait的模型时,借助事件侦听器,将自动从Mediables表中清除对关联媒体的所有引用。好的但这不会删除相关的媒体条目,也不会删除磁盘上与这些媒体一起使用的文件。我可以理解这部分是出于设计:这些媒体条目也可能与其他实体相关联 但在此上下文中,一个媒体项一次只能附加到一个项,如果该项消失,则该媒体项及其关联的文件应随之消失 目前,我通过在模型上注册一个deleting()监听器来解决这个问题,并通过任何连接的媒体循环,分离它,然后逐个删除它 这是推荐的方法,还是我遗漏

当删除具有Mediabletrait的模型时,借助事件侦听器,将自动从Mediables表中清除对关联媒体的所有引用。好的但这不会删除相关的媒体条目,也不会删除磁盘上与这些媒体一起使用的文件。我可以理解这部分是出于设计:这些媒体条目也可能与其他实体相关联

但在此上下文中,一个媒体项一次只能附加到一个项,如果该项消失,则该媒体项及其关联的文件应随之消失

目前,我通过在模型上注册一个deleting()监听器来解决这个问题,并通过任何连接的媒体循环,分离它,然后逐个删除它

这是推荐的方法,还是我遗漏了laravel media中的一些实现细节,这些细节将在给定媒体的引用数用尽时自动处理此内部清理

    public static function boot()
    {
        parent::boot();

        static::deleting(function (self $model) {
            $mediabytag = $model->getAllMediaByTag();
            if ($mediabytag) {
                foreach ($mediabytag as $tag => $medias) {
                    foreach ($medias as $m) {
                        $model->detachMedia($m);
                        $m->delete();
                    }
                }
          }
        });
    }
更新:据我所知,Mediable将关系设置为多态多对多:

    /**
     * Relationship for all attached media.
     * @return MorphToMany
     */
    public function media(): MorphToMany
    {
        return $this
            ->morphToMany(
                config('mediable.model'),
                'mediable',
                config('mediable.mediables_table', 'mediables')
            )
            ->withPivot('tag', 'order')
            ->orderBy('order');
    }

这是一对多关系吗?@MikeRoss,不,如果我理解正确的话,可调节的特质将其设置为多态性多对多关系。(见上面更新的帖子。)这是一对多关系吗?@MikeRoss,不,如果我理解正确的话,可调节特质将其设置为多态性多对多关系。(见上面更新的帖子。)