2016-08-22 5 views
0

私は1つのフォームから入力のバッチを挿入するテーブルを持っています。これは、すべてのエントリが一意の製品コードを共有するために行われますが、各エントリには固有のシリアル番号があります。ユーザーはバッチの数量を挿入し、5とすると5回保存されます。コントローラは、次のようになります。複数のレコードに接尾辞を順次貼り付ける - laravel

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日($バッチ)と一致するすべてのレコードを見つけることによって、全体のバッチを取得することができます。私がしたいのは、各レコードに固有のシリアル番号を付けることです。これには製品コードと番号(最初のエントリは01、2番目の02など)が入ります。

{!! 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', 

    ); 
} 

私は$バッチへの接尾辞を貼り付ける$ I $バッチループ内のforeachを考えていた[ 'シリアル値']フォームからproduction_idとしてシリアル番号が保存されたとき。私はlaravelにサフィックスを連続してペーストする方法を考えることができません。別のノートで

答えて

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

、それは同じバッチからアイテムを識別するための最新の "created_atと日付を使用して、超正確なようではありません。 「バッチID」を与える新しいレコードを最初に作成し、そのバッチIDを新しいインベントリアイテムに追加するバッチテーブルがあるかもしれません。

+1

これに同意すると、タイムスタンプがマイクロ秒でオフになり、同じタイムスタンプの間に一度に2つのバッチが極端にスリムになる可能性があります。 独自の一意のIDを持つ 'batches'という名前のテーブルを作成し、' batch_id'と 'inventory_id'(ピボットテーブル)を含む' inventory_batches'テーブルを追加します。 –

+0

両方のコメントいただきありがとうございます。私はピボットテーブルの使用に同意します。私が混乱しているのは、製品コードに貼り付けるインデックスを生成する方法です。 – MRF

+0

私はインデックスを取得する方法を、心配しないで解決しました。 – MRF

関連する問題