JSON响应分配给$var,然后保存到db

JSON响应分配给$var,然后保存到db,json,laravel-4,Json,Laravel 4,我正在使用Dropzone.js上传Laravel中的多个文件,这可以很好地上传到我的uploads文件夹,但现在我希望将json对象保存到db 目前我有: $file = Input::file('file'); $fileName = $file->getClientOriginalName(); $file->move(public_path().'/uploads/userfiles', $fileName); return Response::json(array('fi

我正在使用Dropzone.js上传Laravel中的多个文件,这可以很好地上传到我的uploads文件夹,但现在我希望将json对象保存到db

目前我有:

$file = Input::file('file');
$fileName = $file->getClientOriginalName();

$file->move(public_path().'/uploads/userfiles', $fileName);
return Response::json(array('filelink' => '/uploads/userfiles/' . $fileName));

那么现在我如何将其存储在“上载”列的“用户”表中呢?

取决于您要存储的内容

据我所知,您想将上载与用户关联?如果您只想存储文件名(可能就足够了),可以执行以下操作:

// models/User.php
class User extends Eloquent {

    // ...

    public function setFilesAttribute(array $files)
    {
        $this->attributes['files'] = json_encode(array_values($files));
    }

    public function getFilesAttribute($files)
    {
        return $files ? json_decode($files, true) : array();
    }
}

// Your script
$file = Input::file('file');
$fileName = $file->getClientOriginalName();

$file->move(public_path().'/uploads/userfiles', $fileName);
$user = User::find(1); // Find your user
$user->files[] = $fileName; // This may work, not too sure if it will being a magic method and all
$user->files = array_merge($user->files, [$fileName]); // If not, this will work
$user->save();

return Response::json(array('filelink' => '/uploads/userfiles/' . $fileName));
像这样的

当然,您可以变得更复杂,创建一个表示“文件”实体的模型,并将多个文件分配给usre:

// models/File.php, should have `id`, `user_id`, `file_name`, `created_at`, `updated_at`
class File extends Eloquent {

    protected $table = 'files';

    protected $fillable = ['file_name']; // Add more attributes

    public function user()
    {
        return $this->belongsTo('User');
    }
}

// models/User.php
class User extends Eloquent {

    // ...

    public function files()
    {
        return $this->hasMany('File');
    }
}

// Your script
$file = Input::file('file');
$fileName = $file->getClientOriginalName();

$file->move(public_path().'/uploads/userfiles', $fileName);
$user = User::find(1); // Find your user
$file = new File([
    'file_name' => $fileName,
    // Any other attributes you want, just make sure they're fillable in the file model
]);
$file->save();
$user->files()->attach($file);

return Response::json(array('filelink' => '/uploads/userfiles/' . $fileName));

我需要添加模型函数吗?我想它只需要将用户上传的文件保存到数据库中。因此,简单最好,而不是过于复杂。两个示例中的一个应该可以工作(尚未测试,可能有一些语法错误)。第一个允许您对文件名进行JSON编码/解码,第二个允许您为文件上传创建一个全新的实体。