循环数据重复

时间:2015-12-16 16:27:52

标签: laravel-5

我正在努力解决问题。我有以下

$fileString = "";
if (Input::hasFile('filePath')) {
    $files = Input::file('filePath');
    dd($files);
    foreach($files as $file) {
        $file->move(public_path('uploads'), $file->getClientOriginalName());

        $fileString .= public_path('uploads') . '/' . $file->getClientOriginalName();

        $uploadDoc = new ReportingDocUpload();
        $uploadDoc->filename = $file->getClientOriginalName();
        $uploadDoc->mime = $file->getClientOriginalExtension();
        $uploadDoc->filepath = $fileString;
        $uploadDoc->documentId = $dsReportingDoc->id;

        $uploadDoc->save();
    }
}

对于每个上传的文件,它应该在数据库中创建一个新行。如果我上传3个文件

,我会显示以下内容
array:3 [▼
  0 => UploadedFile {#29 ▶}
  1 => UploadedFile {#30 ▶}
  2 => UploadedFile {#31 ▶}
]

所以这一切看起来都不错。所以,我有一个循环,它应循环每个UploadedFile并将其保存到数据库。

此刻,这种作品。为每个上传的文档添加一个新行,除了一件事之外的所有内容都是正确的。

错误的是filePath。对于第一行,这很好。数据库中的第二行包含第一个文件和第二个文件的filePath。第三行显示所有三行的filePath。这应该只包含当前文件的filePath。

我已经查看了它,并且不确定我错过了什么,但由于某种原因,这种情况正在发生。

我错过了一些明显的东西吗?

由于

2 个答案:

答案 0 :(得分:1)

在foreach循环中移动$fileString = "";或将$fileString .= public_path('uploads') . '/' . $file->getClientOriginalName();更改为$fileString = public_path('uploads') . '/' . $file->getClientOriginalName();

答案 1 :(得分:1)

因为你在循环之外设置$fileString="",所以每次进入循环时,它都会连接到exists。 实施例

$fileString = ""

循环1:

$fileString .= a

循环2:

$fileString .= b
$fileString = ab

如果清除每个循环中的值,结果就是您所需要的,

示例:

循环1:

$fileString = ""
$fileString = a

循环2:

$fileString = ""
$fileString = b

如果使用=而不是.=,则可能不需要将其分配给循环内的空字符串