Foreach循环不能正常工作在我的Laravel 9代码?

ezykj2lf  于 2022-12-19  发布在  其他
关注(0)|答案(2)|浏览(108)

Screen Shot of HTML Form.你能建议我在我的Laravel应用程序中我做的错误,每次我上传多个文件通过表格,文件上传完美的给定位置,但只有1记录被插入到数据库表。

// Upload bg_certificateArr photo
if ($request->hasFile('bg_certificate')) {
    foreach ($request->file('bg_certificate') as $key => $file) {
        // Get image extention
        $extention =  $file->getClientOriginalExtension();
        // Generate new image name
        $bgCertImgName = 'ac-bg-cert-' . date('Y-m-d-H-i-s') . '.' . $extention;
        $bgCertImgPath = 'accountant/images/bank_guarantee/' . $bgCertImgName;
        // Upload Profile Image
        Image::make($file)->save($bgCertImgPath);
        // Insert data into bank guarantee table
        $bg_amountArr = $data['bg_amount'];
        $bg_numberArr = $data['bg_number'];
        $bank_idArr = $data['bank_id'];
        $bg_from_dateArr = $data['bg_from_date'];
        $bg_to_dateArr = $data['bg_to_date'];
        $bg_amount = $bg_amountArr[$key];
        $bg_number = $bg_numberArr[$key];
        $bank_id = $bank_idArr[$key];
        $bg_from_date = $bg_from_dateArr[$key];
        $bg_to_date = $bg_to_dateArr[$key];
        // echo '<pre>';
        // print_r($bg_to_date);
        // die();
        $ac_bg->school_id = $schoolID;
        $ac_bg->ledgers_id = $acLedger->id;
        $ac_bg->bg_amount = $bg_amount;
        $ac_bg->bg_number = $bg_number;
        $ac_bg->bank_id = $bank_id;
        $ac_bg->bg_from_date = $bg_from_date;
        $ac_bg->bg_to_date = $bg_to_date;
        $ac_bg->bg_certificate = $bgCertImgName;
        $ac_bg->save();
    }
}
cbjzeqam

cbjzeqam1#

为每个foreach循环初始化$ac_bg。

if ($request->hasFile('bg_certificate')) {
    foreach ($request->file('bg_certificate') as $key => $file) {

        $ac_bg = new AccountBankGuarantee; // like this

        // Get image extention
        $extention =  $file->getClientOriginalExtension();
        // Generate new image name
        $bgCertImgName = 'ac-bg-cert-' . date('Y-m-d-H-i-s') . '.' . $extention;
        $bgCertImgPath = 'accountant/images/bank_guarantee/' . $bgCertImgName;
        // Upload Profile Image
        Image::make($file)->save($bgCertImgPath);
        // Insert data into bank guarantee table
        $bg_amountArr = $data['bg_amount'];
        $bg_numberArr = $data['bg_number'];
        $bank_idArr = $data['bank_id'];
        $bg_from_dateArr = $data['bg_from_date'];
        $bg_to_dateArr = $data['bg_to_date'];
        $bg_amount = $bg_amountArr[$key];
        $bg_number = $bg_numberArr[$key];
        $bank_id = $bank_idArr[$key];
        $bg_from_date = $bg_from_dateArr[$key];
        $bg_to_date = $bg_to_dateArr[$key];
        // echo '<pre>';
        // print_r($bg_to_date);
        // die();
        $ac_bg->school_id = $schoolID;
        $ac_bg->ledgers_id = $acLedger->id;
        $ac_bg->bg_amount = $bg_amount;
        $ac_bg->bg_number = $bg_number;
        $ac_bg->bank_id = $bank_id;
        $ac_bg->bg_from_date = $bg_from_date;
        $ac_bg->bg_to_date = $bg_to_date;
        $ac_bg->bg_certificate = $bgCertImgName;
        $ac_bg->save();
    }
}
sbdsn5lh

sbdsn5lh2#

你还没有在这里贴出完整的代码,但是我相信在循环之前你已经设置了$ac_bg变量,所以看看你的代码,你创建了一个记录,并在下一次循环迭代中更新它。
因此,要解决这个问题,你可能应该这样做:

foreach ($request->file('bg_certificate') as $key => $file) {
   $ac = new Ac(); // don't know what's the exact model class here

然后在每个循环迭代中,您将创建新记录,而不是更新它。

相关问题