按顺序将后缀粘贴到多个记录 - laravel

时间:2016-08-22 13:27:18

标签: laravel loops for-loop batch-processing

我有一个表格,我在其中插入一个表单中的一批输入。这是在每个条目共享唯一的产品代码时完成的,但每个条目都有唯一的序列号。用户插入批次的数量,例如5,并将项目保存5次。控制器如下所示:

 public function store()
    {

            $data = Input::get();

            for ($i=0; $i<($data['quantity']); $i++){
            $this->repository->saveItem($data, '');


            $initial = Inventory::orderBy('created_at', 'desc')->first();
            $batch = Inventory::where('created_at', '=', $initial['created_at'])->get();



        return Redirect::route('inventory.index')->with('flash_notice', "Item Created");
    }

我可以通过查找匹配相同created_at日期($ batch)的所有记录来检索整个批处理。我想要做的是给每个记录一个唯一的序列号,即产品代码加上一个数字(第一个条目获得01,第二个条目等)。

我的观点是这种形式:

 {!! Form::open(array('method'=>'POST', 'route'=>array('inventory.store'))) !!}

 <div class="form-group">
                    {!! Form::label('production_id', 'Production ID', ['class' => 'control-label']) !!}
                    {!! Form::text('production_id', null, ['class' => 'form-control']) !!}
                </div>
    <div class="form-group">
                    {!! Form::label('quantity', 'Quantity of chips:', ['class' => 'control-label']) !!}
                    {!! Form::number('quantity', null, ['class' => 'form-control']) !!}
                </div>

                {!! Form::submit('Create New Batch Entry', ['class' => 'btn btn-primary']) !!}
            {!! Form::close() !!}

我的模特是:

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Inventory extends Model
{
    use SoftDeletes;

    /**
     * @var string
     */
    protected $table = "inventory";

    /**
     * @var string
     */
    protected $primaryKey = "id";

    /**
     * @var array
     */
    protected $fillable = array(

        'serial_number',
        'production_id',
        'created_at',
        'deleted_at',  

    );
}

当我将序列号从表单保存为production_id时,我正考虑在$ batch循环中使用foreach $ i将后缀粘贴到$ batch [&#39; serial_number&#39;]上。我无法弄清楚如何在laravel中按顺序粘贴后缀。

1 个答案:

答案 0 :(得分:1)

$batch->each(function ($item, $index) use ($productcode) {
    $item->update(['serial_number' => $productCode . $index]);
});

另一方面,使用最新的&#39;它似乎并不准确。 created_at date用于标识同一批次中的项目。 也许有一个批处理表,您首先要创建一个新记录,为您提供批量ID&#39;然后将该批次ID添加到新的库存项目中。