尝试在Laravel 5中分配非对象的属性

时间:2017-06-06 17:48:04

标签: laravel laravel-5

我有以下Laravel代码,它从API接收数据并将它们存储在数据库中。

$sample = Sample::findOrFail($id);
$new_sample = $request->except('filename');

if ( $request->file('filename') ) {
     if ( $sample->filename ) {
           Storage::disk('documents')->delete($sample->filename);
     }
     $file = $request->file('filename');
     $extension = $file->getClientOriginalExtension();
     $new_sample->filename = $file->getFilename().'.'.$extension;
     Storage::disk('documents')->put($file->getFilename().'.'.$extension,  File::get($file));
}

if (!$sample->update($new_sample)) {
     throw new HttpException(500);
}

我有以下错误Attempt to assign property of non-object,我发现通过注释掉我指定文件名的行,错误不再出现。

$new_sample->filename = $file->getFilename().'.'.$extension;

所以,我猜问题就在这里。我也试过

$new_sample['filename'] = $file->getFilename().'.'.$extension;

但是它没有存储文件名。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您收到此错误,因为Request对象中没有文件。

这是因为您使用了错误的方法来检查文件。使用hasFile()方法。所以你需要改变这个:

if ( $request->file('filename') ) {

对此:

if ($request->hasFile('filename')) {