我有一个表格,我在其中插入一个表单中的一批输入。这是在每个条目共享唯一的产品代码时完成的,但每个条目都有唯一的序列号。用户插入批次的数量,例如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中按顺序粘贴后缀。
答案 0 :(得分:1)
$batch->each(function ($item, $index) use ($productcode) {
$item->update(['serial_number' => $productCode . $index]);
});
另一方面,使用最新的&#39;它似乎并不准确。 created_at date用于标识同一批次中的项目。 也许有一个批处理表,您首先要创建一个新记录,为您提供批量ID&#39;然后将该批次ID添加到新的库存项目中。