【问题标题】:How to delete user's logo if user has been deleted in Laravel 4?如果用户已在 Laravel 4 中删除,如何删除用户的徽标?
【发布时间】:2015-01-22 22:44:22
【问题描述】:

描述

我的数据库中有一个名为:logo_path 在我的 users 表中的字段。 logo_path 只会存储一个标志的路径。 我的 app/files/logo_path/

中还有一个 logo_path 文件夹

我有一个创建用户表单,在创建用户时,我允许用户上传他们想要的头像/徽标。

工作

创建帐户的过程是工作,上传也是工作,文件也保存到我想要的位置。

问题

这里有一个小问题,我的 logo_path 文件夹中现在有很多随机照片。 所有这些都变得烦人,我想知道如果用户已被删除,是否有办法删除该用户的徽标?

用户控制器 --> destroy()

public function destroy($id){

    $user = User::find($id);
    $user->delete();

    return Redirect::to('/users/');

}

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    只需添加

    $success = File::delete(base_path().'/app/files/logo_path/'.$user->logo_path);

    更新:用户控制器

    public function destroy($id){
    
        $user = User::find($id);
        $user->delete();
        $success = File::delete(base_path().'/app/files/logo_path/'.$user->logo_path);
    
        return Redirect::to('/users/');
    
    }
    

    【讨论】:

      【解决方案2】:

      通常,这样的事情可能发生在不止一个地方。 Laravel 的模型事件可以让你在一个地方可靠地做到这一点,而不是在控制器中捕获它们。

      http://laravel.com/docs/4.2/eloquent#model-events

      class User extends Eloquent {
          public static function boot() {
              parent::boot();
      
              User::deleted(function($user) {
                  // now that the user has been deleted, delete their logo
                  File::delete('path/to/logos/' . $user->logo);
              }
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-01
        • 2021-10-19
        • 1970-01-01
        • 2019-06-15
        • 1970-01-01
        • 2020-12-13
        • 1970-01-01
        相关资源
        最近更新 更多