【问题标题】:Getting files uploaded correctly using Laravel使用 Laravel 正确上传文件
【发布时间】:2014-10-08 11:26:28
【问题描述】:

我在 Laravel 中使用的照片上传系统遇到了一些问题。到目前为止,我已经将文件输入并保存在 public/images/profiles 中,但我不知道如何将它插入到带有正确信息的数据库中。目前我收到“调用未定义方法 Illuminate\Database\Eloquent\Collection::save() ”错误。

在我的控制器中,我目前正在尝试通过这样做来插入它:

public function updatePhotos($id)
{
    if(Input::hasFile('image'))
    //If file is being added 
    {
        $extension = Input::file('image')->getClientOriginalExtension();
        $fileName = str_random(9).'.'.$extension;

        $user = User::find($id);
        $user->profile->photo->type = 1;
        $user->profile->photo->filename = $fileName;
        $user->profile->photo->save();

        Input::file('image')->move('public/images/profiles/',$fileName);
    }
}

在照片模型中:

public function profile()
{
    return $this->hasOne('Profile');
}

在配置文件模型中,我有:

public function photo()
{
    return $this->hasMany('Photo','user_id','user_id');
}

任何人都可以为我发送正确的课程吗?

谢谢

【问题讨论】:

    标签: php file-upload laravel-4 eloquent


    【解决方案1】:

    你正在尝试保存用户模型,你必须创建一个新的照片模型,用数据填充它并保存它。

    public function updatePhotos($id)
    {
        $image = new Image();
        $image->user_id = Auth::id();
        $image->fill(Input::all());
    
        if (Input::hasFile('file')) {
            $file             = Input::file('file');
            $image->extension = $file->guessClientExtension();
            $image->size      = $file->getClientSize();
            $image->filename  = str_random(9) . '.' . $image->extension;
            $uploadSuccess    = $file->move('public/images/profiles/', $image->filename);
    
            $image->save();
    
            $user = User::find($id);
            $user->image = $image->id;
            $user-save();
            }
        }
    }
    
    • 已创建新图像对象。
    • 图像对象上的字段user_id 设置为当前用户ID。
    • 所有fillable 字段都填充了表单中的数据。
    • 如果输入有文件,则文件设置为$image->user_id = Auth::id();
    • 在图像对象上设置图像扩展名、大小和文件名。
    • 图像已移动(放置)到public/images/profiles/ 文件夹中。
    • 图像对象已保存。
    • 获取用户对象,为image字段分配图像ID并保存用户对象。

    【讨论】:

      猜你喜欢
      • 2013-12-18
      • 2019-10-15
      • 1970-01-01
      • 2013-12-15
      • 2016-12-13
      • 2019-12-13
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多